携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
官方文档的参数 pandas.concat(objs, axis=0, join='outer' , ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=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
df2=pd.DataFrame([['d',4],['e',5]],columns=['letter','num'])
df2
pd.concat([df1,df2])#把df2纵向拼接到df1下面
交换一下顺序看看
pd.concat([df2,df1])#把df1纵向拼接到df2下面
此时df1与df2顺序交换了,看来[,]中后面的对象拼接到前面对象的下面。
不过此时index依旧没变 如果想要index的值根据新表的合成而变 只需将ignore改为True,ignore默认为False
pd.concat([df1, df2], ignore_index=True)
2.
如果合并的列不完全相同,比如一个表的列比另一个表的列多
此时新建一个表
df3=pd.DataFrame([['d',4,'Jone'],['e',5,'Ann']],columns=['letter','num','name'])
此时将df1与df3进行合并 df1表为
df3表为
pd.concat([df1.df3])#进行合并
由结果可看出合成表的列名为df1和df3列名的并集,空处用NaN填充
3.join
join默认outer outer为外部合并,两个表的列名取并集 inner为内部合并,两个表的列名取交集 可将其改为inner
pd.concat([df1,df3],join='inner')
4. axis
先建一个表
df4 = pd.DataFrame([['line', 'coco'], ['monkey', 'george']],
columns=['animal', 'name'])
axis默认为0,为纵向合并,已在上文演示
1为横向合并
现将df1与df4进行横向合并
pd.concat([df1,df4],axis=1)
5.verify_integrity
verify_integrity意思是检测索引是否有重复
verify_integrity默认为False
将其改为True 试试df1与df4
pd.concat([df1,df2],verify_integrity=True)
则报错