Skip to content

concat()

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 一个序列或者是Series、DataFrame对象。
axis 表示在哪个轴方向上(行或者列)进行连接操作,默认 axis=0 表示行方向。
join 指定连接方式,取值为{"inner","outer"},默认为 outer 表示取并集,inner代表取交集。
ignore_index 布尔值参数,默认为 False,如果为 True,表示不在连接的轴上使用索引。
join_axes 表示索引对象的列表。

构建两个dataframe

import pandas as pd
df1 = pd.DataFrame({'sno':['one','two','three','four'],'Math':[50,60,70,80],'English':[99,34,83,23],'CS':[32,60,75,90]})
df2 = pd.DataFrame({'sno':['one','two','three','four'],'Math':[75,30,62,32],'English':[85,43,83,54],'CS':[52,74,77,90]})
df5 = pd.concat([df1,df2],axis=0).set_index('sno')
print(df5)
    Math    English CS
sno         
one     50  99  32
two     60  34  60
three   70  83  75
four    80  23  90
one     75  85  52
two     30  43  74
three   62  83  77
four    32  54  90

merge()

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True)
参数详情

df4 = pd.merge(df1,df2,on='sno')  #on是两者都存在的列
print(df4)
    sno Math_x  English_x   CS_x    Math_y  English_y   CS_y
0   one     50  99  32  75  85  52
1   two     60  34  60  30  43  74
2   three   70  83  75  62  83  77
3   four    80  23  90  32  54  90

join()

df1.join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False)
其中on和how参数与merge()方法相似。

#根据相同的列数据整合,左右合并
left = df1.set_index(['sno'])
right = df2.set_index(['sno'])
left.join(right,lsuffix='_stu1',rsuffix='_stu2')
    Math_stu1   English_stu1    CS_stu1 Math_stu2   English_stu2    CS_stu2
sno                     
one 50  99  32  75  85  52
two 60  34  60  30  43  74
three   70  83  75  62  83  77
four    80  23  90  32  54  90

append()

append函数是pandas针对DataFrame、Series等数据结构合并提供的函数。
df1.append(self, other, ignore_index=False, verify_integrity=False)

下面例子df1.append(df2,ignore_index=True)与pd.concat([df1,df2],ignore_index=True)具有相同的合并结果

df3 = df1.append(df2,ignore_index=True)   #ignore_index=True,合并后df3会重新索引
print(df3)
sno Math    English CS
0   one     50  99  32
1   two     60  34  60
2   three   70  83  75
3   four    80  23  90
4   one     75  85  52
5   two     30  43  74
6   three   62  83  77
7   four    32  54  90