python中pandas的concat用法

836 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

官方文档的参数 pandas.concat(objsaxis=0join='outer'ignore_index=Falsekeys=Nonelevels=Nonenames=Noneverify_integrity=Falsesort=Falsecopy=True)

由于axis默认为0,故python中pandas.concat()默认是对两个表的纵向连接

DateFrame对象

1.首先建立两个dateframe对象

import pandas as pd#导入pandas库
#创建两个pandas对象
df1=pd.DataFrame([['a',1],['b',2],['c',3]],columns=['letter','num'])
df1

image.png

df2=pd.DataFrame([['d',4],['e',5]],columns=['letter','num'])
df2

image.png

pd.concat([df1,df2])#把df2纵向拼接到df1下面

image.png

交换一下顺序看看

pd.concat([df2,df1])#把df1纵向拼接到df2下面

image.png

此时df1与df2顺序交换了,看来[,]中后面的对象拼接到前面对象的下面。

不过此时index依旧没变 如果想要index的值根据新表的合成而变 只需将ignore改为True,ignore默认为False

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

image.png

2.

如果合并的列不完全相同,比如一个表的列比另一个表的列多

此时新建一个表

df3=pd.DataFrame([['d',4,'Jone'],['e',5,'Ann']],columns=['letter','num','name'])

image.png

此时将df1与df3进行合并 df1表为

image.png

df3表为

image.png

pd.concat([df1.df3])#进行合并

image.png

由结果可看出合成表的列名为df1和df3列名的并集,空处用NaN填充

3.join

join默认outer outer为外部合并,两个表的列名取并集 inner为内部合并,两个表的列名取交集 可将其改为inner

pd.concat([df1,df3],join='inner')

image.png

4. axis

先建一个表

df4 = pd.DataFrame([['line', 'coco'], ['monkey', 'george']],
                   columns=['animal', 'name'])

image.png

axis默认为0,为纵向合并,已在上文演示

1为横向合并

现将df1与df4进行横向合并

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

image.png

5.verify_integrity

verify_integrity意思是检测索引是否有重复

verify_integrity默认为False

将其改为True 试试df1与df4

pd.concat([df1,df2],verify_integrity=True)
则报错

image.png