#数据合并一对一
#相同的列进行合并 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