

#数据合并一对一
#相同的列进行合并
import pandas as pd
df1=pd.read_excel('student1.xlsx')
df2=pd.read_excel('student2.xlsx')
#dfl #测试数据读取
#数据合并
new_df=pd.merge(df1,df2,on='编号')
print(new_df)
编号_x 语文 数学 英语 编号_y 体育
0 msb1001 145 150 134 msb1001 35.4
1 msb1002 146 145 143 msb1002 23.5
2 msb1003 150 134 135 msb1003 35.4
#数据合并后去掉重复数据
pd.set_option ( 'display.unicode.east_asian_width', True)
df1=pd.read_excel('student1.xlsx')
df2=pd.read_excel('student2.xlsx')
#how='left' 以df1表长短为准,how='right' 以df1表长短为准,没有的值补充NaN
#left,right对应outer,inner。通用
new_df=pd.merge(df1,df2,how='left',on='编号') #去掉相同的 编号y 列
print(new_df)
编号 语文 数学 英语 体育
0 msb1001 145 150 134 35.4
1 msb1002 146 145 143 23.5
2 msb1003 150 134 135 35.4
##多对一合并
#多对一合并
import pandas as pd
pd.set_option ( 'display.unicode.east_asian_width', True)
df1=pd.DataFrame({ '编号': ['msb1001','msb1002','msb1003'],
'姓名':['张三','李四','王五']})
df2=pd.DataFrame ({ '编号': ['msb1001','msb1001','msb1003'],
'语文': [145, 134, 146],
'数学': [149, 132, 150],
'英语':[123, 134, 143],
'月份':['1月','2月','1月'] })
#多对一的数据合并
new_df=pd.merge(df1,df2,on='编号')
print(new_df)
编号 姓名 语文 数学 英语 月份 0 msb1001 张三 145 149 123 1月 1 msb1001 张三 134 132 134 2月 2 msb1003 王五 146 150 143 1月
##多对多的数据合并
#多对多的数据合并
import pandas as pd
df1=pd.DataFrame ({'编号': ['msb1001','msb1002','msb1003','msb1003','msb1003'],
'语文': [145, 134, 143, 145, 147]})
df2=pd. DataFrame ( {'编号': ['msb1001','msb1002', 'msb1003','msb1001','msb1001'],
'体育': [34.5,28.4,39.6, 34.6,45.5]})
new_df=pd. merge(df1, df2)
print(new_df)
编号 语文 体育
0 msb1001 145 34.5
1 msb1001 145 34.6
2 msb1001 145 45.5
3 msb1002 134 28.4
4 msb1003 143 39.6
5 msb1003 145 39.6
6 msb1003 147 39.6
浙公网安备 33010602011771号