merge into on多个条件_【Python代替Excel】7:merge、concat、append

准备工作:下载示例数据,提取码:tkqn 数据例子

69a3e81c545ec06038086ed38b74763b.png
数据预览

在数据合并中,有merge和concat是比较常用的。

merge:左连、右连、内连

新建两个dataframe数据集:

import pandas as pd

df1 = pd.DataFrame({'key1':['b','b','a','a','b','a','c'],'key2':['i','j','k','k','i','j','k'],'data1':range(7)})
df2 = pd.DataFrame({'key1':['a','b','d'],'key2':['k','j','i'],'data2':range(3)})

1e74196a501532bb6789df0eb16bf35e.png
  • 以索引进行合并
merge1 = pd.merge(df1,df2,how='left',left_index=True,right_index=True)  #index 左连
merge2 = pd.merge(df1,df2,how='right',left_index=True,right_index=True) #index 右连
merge3 = pd.merge(df1,df2,how='inner',left_index=True,right_index=True) #index 内连

19495e111a5f88e31bec7b8b972ac82c.png

因为两个df都有key1、key2列,所以连接之后,以x、y后缀去区分。当然也可以自定义后缀:

merge4 = pd.merge(df1,df2,how='inner',left_index=True,right_index=True,suffixes=('左','右')) #index 自定义后缀

7b2924d9462f71e1a83ed92d67f1c587.png
  • 以某一列为连接键进行合并

比如以key1列进行合并

merge5 = pd.merge(df1,df2,left_on='key1',right_on='key1',how='left')    #key1  左连

f9b1d55d090ca7a7a5599501525837a0.png
  • 以某两列为连接键进行合并

实际中挺常见的,比如先按日期,再按部门。

merge6 = pd.merge(df1,df2,on=['key1','key2'],how='inner')   #key1 key2  内连 

5ff94d16d0f7b472df1457cf61dc781b.png

concat:横向合并、纵向合并

  • 纵向合并:
concat1 = pd.concat([df1,df2],axis=0)  #纵向合并,保留原来的index
concat2 = pd.concat([df1,df2],axis=0,ignore_index=True)   #纵向合并,重新赋值inde

53404575a5f1f1bf65a430e3306681be.png
  • 横向合并,相当于merge(index=True)
concat3 = pd.concat([df1,df2],axis=1)  #横向合并,以index为连接键

0c77b29a74d2a6f468d97f4d3f516d1e.png

concat可以多个df进行连接,[df1,df2,df3...]

append

append和concat纵向合并类似:df1.append(df2, ignore_index=True)

f9060d7bf572a4a783b824f096e0d149.png

专栏列表

数据分析与Python:【Python代替Excel】1:Python与Anaconda

数据分析与Python:【Python代替Excel】2:数据的读取

数据分析与Python:【Python代替Excel】3:数据的预览

数据分析与Python:【Python代替Excel】4:数据的清洗

数据分析与Python:【Python代替Excel】5:数据的统计分析

数据分析与Python:【Python代替Excel】6:按条件筛选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值