约定第一行代码

import pandas as pd

轴向连接-Concat

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

如下是该函数的参数解读
pd.concat(objs, axis=0, join='outer',ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)

参数说明

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

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

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

ignore_index:是否忽略索引

keys:层次化索引

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

纵向连接

pd.concat([s1,s2],axis=1)

代码结果

01
a1.0NaN
b2.03.0
dNaN4.0
eNaN5.0

用内连接求交集

pd.concat([s1,s2],axis=1,join='inner')

代码结果

01
b2.03.0

创建层次化索引

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

#代码结果
A  a    1
   b    2
B  b    3
   d    4
   e    5
dtype: int64

当纵向连接时keys为列名

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

代码结果

AB
a1.0NaN
b2.03.0
dNaN4.0
eNaN5.0

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

concat层级化连接

pd.concat([df3,df4],axis=1,keys=['A','B'])

代码结果
图1

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

pd.concat({'A':df3,'B':df4},axis=1)

图2

忽略索引

pd.concat([df3,df4],ignore_index=True)

图3


世界因代码而改变 Peace Out
世界因代码而改变 Peace Out
最后修改:2020 年 10 月 07 日 03 : 20 PM
如果觉得我的文章对你有用,请随意赞赏