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