pandas拼接两个dataframe_pandas回顾小结(三)-合并与拼接

84a023ef30d8986f30e066c17d10ded7.png

目录:

橘猫吃不胖:pandas回顾小结(二)​zhuanlan.zhihu.com
73e2ca49ad518efd95f7f0b8e388d172.png
橘猫吃不胖:pandas回顾小结(一)​zhuanlan.zhihu.com
73e2ca49ad518efd95f7f0b8e388d172.png

数据合并

DataFrame.merge( right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes='_x', '_y', copy=True, indicator=False, validate=None)

这个函数,类似于SQL中的JOIN,也就是关联查询,就是将两个DataFrame进行合并

df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
                    'value': [1, 2, 3, 5]})

df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
                    'value': [5, 6, 7, 8]})

5acb7cae14361086bae36477eb1aead1.png

上面是我们的基础数据,现在试试这个merge函数的使用

df1.merge(df2, left_on='lkey', right_on='rkey' )

fa3817776d2fb4c94a93994b36be8199.png

我们指定了连个DataFrame关联的字段,默认的话, 是inner,相当于是内关联

ac1224da285784669a1cbbbb59b22d8a.png

还有一个类似的函数:

DataFrame.join( other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

如果是使用index来关联合并数据的话, 使用join更为合适

df1 = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame({'c':[8,8], 'd':[9,9]})

df1.join(df2)

95ec981b4de886e8a6be7c57146f115d.png

数据拼接

pandas.concat( objs:Union[Iterable[‘DataFrame’], Mapping[Label, ‘DataFrame’]], axis='0', join:str="'outer'", ignore_index:bool='False', keys='None', levels='None', names='None', verify_integrity:bool='False', sort:bool='False', copy:bool='True')→ ’DataFrame’

在某个轴上,将数据直接怼上去,按照行或者列进行拼接

df1 = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame({'c':[8,8], 'd':[9,9]})

1d02cceea56105a429e7523634a1f9ae.png
pd.concat([df1, df2])

39f8983c36328235fb7086322d107e03.png

默认是在index上进行拼接,index的索引也是拼接的,我们可以使用参数,忽略重置索引

pd.concat([df1, df2], ignore_index=True)

9e58653a529d09fbb3f92dc122609e7b.png

也可以按照column进行拼接,这时拼接的时候,会按照index进行一步整合

pd.concat([df1, df2] , axis=1)

d06160d25f36ce098738a0bdcf93be88.png
df3 = pd.DataFrame({'c':[8,8], 'd':[9,9]}, index=[8,9])
pd.concat([df1, df3])

9e177f5c6c9dd8eb7232c085c457741e.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值