Pandas详解十九之轴向连接Pandas对象-Concat

约定:
import pandas as pd

轴向连接-Concat

在数据处理中,通常将原始数据分开几个部分进行处理而得到相似结构的Series或DataFrame对象,我们该如何进行纵向合并它们?这时我们可以选择用pd.concat()方式极易连接两个或两个以上的Series或DataFrame对象。如下是该函数的参数解读:

pd.concat(objs, axis=0, join=’outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)

参数说明:

objs:连接对象,多以列表、字典传入

axis:轴向,0代表纵向连接,1,代表横向连接

join:连接方式,共有’inner’,’left’,right’,’outer’

join_axes:参与连接的索引

ignore_index:是否忽略索引

keys:层次化索引

1 Series对象的连接

s1=pd.Series([1,2],index=list('ab'))
s2=pd.Series([3,4,5],index=list('bde'))

pd.concat([s1,s2])

代码结果:

a    1
b    2
b    3
d    4
e    5
dtype: int64

2 纵向连接

pd.concat([s1,s2],axis=1)
代码结果:
01
a1.0NaN
b2.03.0
dNaN4.0
eNaN5.0

3 用内连接求交集

pd.concat([s1,s2],axis=1,join='inner')
代码结果:
01
b23

4 指定部分索引进行连接

pd.concat([s1,s2],axis=1,join_axes=[list('abc')])
代码结果:
01
a1.0NaN
b2.03.0
cNaNNaN

5 创建层次化索引

pd.concat([s1,s2],keys=['A','B'])

代码结果:

A  a    1
   b    2
B  b    3
   d    4
   e    5
dtype: int64

6 当纵向连接时keys为列名

pd.concat([s1,s2],keys=['A','B'],axis=1)
代码结果:
AB
a1.0NaN
b2.03.0
dNaN4.0
eNaN5.0

7 DataFrame对象的连接

  • 创建DataFrame对象
df3=pd.DataFrame({'Red':[1,3,5],'Green':[5,0,3]},index=list('abd'))
df3
代码结果:
GreenRed
a51
b03
d35
df4=pd.DataFrame({'Blue':[1,9],'Yellow':[6,6]},index=list('ce'))
df4
代码结果:
BlueYellow
c16
e96
pd.concat([df3,df4],axis=1,keys=['A','B'])
AB
GreenRedBlueYellow
a5.01.0NaNNaN
b0.03.0NaNNaN
cNaNNaN1.06.0
d3.05.0NaNNaN
eNaNNaN9.06.0

8 用字典的方式连接同样可以创建层次化列索引

pd.concat({'A':df3,'B':df4},axis=1)
代码结果:
AB
GreenRedBlueYellow
a5.01.0NaNNaN
b0.03.0NaNNaN
cNaNNaN1.06.0
d3.05.0NaNNaN
eNaNNaN9.06.0

9 忽略索引

pd.concat([df3,df4],ignore_index=True)
BlueGreenRedYellow
0NaN5.01.0NaN
1NaN0.03.0NaN
2NaN3.05.0NaN
31.0NaNNaN6.0
49.0NaNNaN6.0

谢谢大家的浏览,
希望我的努力能帮助到您,
共勉!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值