蓝绝

博客园 首页 新随笔 联系 订阅 管理

 

 

 

 

 #数据合并一对一

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

 

posted on 2022-11-20 21:30  蓝绝  阅读(38)  评论(0编辑  收藏  举报