Python_DataFrame_merge

Dataframe的merge操作

dataframe的merge是按照两个dataframe共有的column进行连接,两个dataframe必须有同名的column ,merger操作与操作数据库表类似。

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

pd1=pd.DataFrame({'key1':['a','b','c'],'value1':[1,2,3]})
pd1
 key1value1
0a1
1b2
2c3

pd2=pd.DataFrame({'key1':['d','e','f'],'value1':[4,5,6]})
pd2
 key1value1
0d4
1e5
2f6
pd.merge(pd1,pd2)   #没有相同的列值,则无法合并
pd3=pd.DataFrame({'key1':['a','b','c'],'value1':[4,5,6]})
pd3
 key1value1
0a4
1b5
2c6
pd.merge(pd1,pd3)              #不指定列 关联条件就是所有同名的列
pd.merge(pd1,pd3,on='key1')    #指定列 关联条件是所有同名的列
 key1value1_xvalue1_y
0a14
1b25
2c36
pd4=pd.DataFrame({'name':['a','b','c','d'],'age':[1,2,3,4],'score':[99,100,98,87],'class':[2000,2000,2000,20001]})
pd4
 nameagescoreclass
0a1992000
1b21002000
2c3982000
3d48720001
pd5=pd.DataFrame({'name':['a','c'],'class':[2000,20001],'sex':[0,1]})
pd5
 nameclasssex
0a20000
1c200011
pd.merge(pd4,pd5)  
 nameagescoreclasssex
0a19920000
pd.merge(pd4,pd5,on='name')   
 nameagescoreclass_xclass_ysex
0a199200020000
1c3982000200011
pd.merge(pd4,pd5,on=['name','class']) 
pd.merge(pd4,pd5,on='name',how='left')           #左关联
 nameagescoreclass_xclass_ysex
0a19920002000.00.0
1b21002000NaNNaN
2c398200020001.01.0
3d48720001NaNNaN
pd.merge(pd4,pd5,on='name',how='right')         #右关联
 nameagescoreclass_xclass_ysex
0a199200020000
1c3982000200011
pd.merge(pd5,pd4,on='name',how='left')         #左关联
 nameclass_xsexagescoreclass_y
0a200001992000
1c2000113982000
pd.merge(pd4,pd5,on='name',how='outer')        #外关联
 nameagescoreclass_xclass_ysex
0a19920002000.00.0
1b21002000NaNNaN
2c398200020001.01.0
3d48720001NaNNaN
pd.merge(pd4,pd5,on='name',how='inner')       #内关联
 nameagescoreclass_xclass_ysex
0a199200020000
1c3982000200011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值