dataframe 合并_pandas的合并(merge)操作

4f62d76e9e179b99fe307f56e4cb9b7a.png
5c40679a5d099fd874f1050bbd4a859e.png
c8e28f4b221b56c4ed43611b0aa13fe0.gif

merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并

使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

注意每一列元素的顺序不要求一致

1.一对一合并

import numpy as npimport pandas as pdfrom pandas import Series,DataFramedf1 = DataFrame({'employee':['Bob','Jake','Lisa'], 'group':['Accounting','Engineering','Engineering'], })df2 = DataFrame({'employee':['Lisa','Bob','Jake'], 'hire_date':[2004,2008,2012], })display(df1,df2)输出: employeegroup0Bob Accounting1Jake Engineering2Lisa Engineering employee hire_date 0Lisa 2004 1Bob 2008 2Jake 2012 df3 = pd.merge(df1,df2) df3 输出: employeegrouphire_date0 BobAccounting 20081 JakeEngineering 20122 LisaEngineering 2004

多对一合并

df3 = DataFrame({ 'employee':['Lisa','Jake'], 'group':['Accounting','Engineering'], 'hire_date':[2004,2016]})df4 = DataFrame({'group':['Accounting','Engineering','Engineering'], 'supervisor':['Carly','Guido','Steve'] })display(df3,df4,pd.merge(df3,df4))输出:employeegrouphire_date0LisaAccounting20042 JakeEngineering2016groupsupervisor0AccountingCarly1EngineeringGuido2EngineeringSteveemployeegrouphire_datesupervisor0LisaAccounting2004Carly1JakeEngineering2016Guido2JakeEngineering2016Steve

多对多合并

df1 = DataFrame({'employee':['Bob','Jake','Lisa'], 'group':['Accounting','Engineering','Engineering']})df5 = DataFrame({'group':['Engineering','Engineering','HR'], 'supervisor':['Carly','Guido','Steve'] })display(df1,df5,pd.merge(df1,df5))#多对多display(pd.concat([df1,df5]))输出:employeegroup0BobAccounting1JakeEngineering2LisaEngineeringgroupsupervisor0EngineeringCarly1EngineeringGuido2HRSteveemployeegroupsupervisor0JakeEngineeringCarly1JakeEngineeringGuido2LisaEngineeringCarly3LisaEngineeringGuido employeegroupsupervisor0BobAccountingNaN1JakeEngineeringNaN2LisaEngineeringNaN0NaNEngineeringCarly1NaNEngineeringGuido2NaNHRSteve

(1)key的规范化

使用on=显式指定哪一列为key

df1 = DataFrame({'employee':['Jack',"Summer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值