有这样一个数据集:
两张表用ID关联着
一、通过ID联合查询
import pandas as pd
students = pd.read_excel("C:/Users/Administrator/Desktop/Student_Score.xlsx",sheet_name="Students")
scores = pd.read_excel("C:/Users/Administrator/Desktop/Student_Score.xlsx",sheet_name='Scores')
data = pd.merge(students,scores)
print(data)
结果:
说明:1.merge如果不指定基于哪个字段,会自动在列中查找相同的字段进行匹配
2.如果在读取时,设置了index_col,要在merge中设置on='ID',或者用left_on 和right_on
3.如果在读取时,设置了index_col,用join可直接联立查询,不需设置on
data = students.join(scores,how='left').fillna(0)
data.Score = data.Score.astype(int)
print(data)
merge参数:DataFrame.
merge
(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
主要常用参数介绍:
* left,right:表示想要进行合并的DataFrame
* how,值可以是inner,left,right,outer,mysql的sql查询操作,默认值是inner
* left_on,right_on是用来指定希望用来作用合并依据的列名,如果不指定的话会自动寻找列名相同的列进行合并
* left_index,right_index设置为True的话表示使用该DF的列索引作为合并的根据进行合并
* sort默认为False,设置为True时表示合并时会根据给定的列值(也就是前面的left_on这种指定的列的值)来进行排序后再输出
* suffixes是用来给重名的列增加后缀名的,可以使用默认值也可以自己修改,比如要合并df1和df2都有一个列的名字是data,那么合并后left的DF的data列名变为了data_x