文章目录
一、pd.concat实现数据合并1.1 相同字段的表首尾相接(列对齐)1.2 横向表拼接(行对齐)1.2.1 axis参数1.2.2 join参数1.2.3 join_axes1.2.4 无视index的concat1.2.5 合并的同时增加区分数据组的键
二、df.append三、pd.merge3.1 pd.merge合并
四、总结
一、pd.concat实现数据合并
pd.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False,keys=None)
将数据根据不同的轴作简单的融合axis=0:沿0轴(纵向)进行合并axis=1:沿1轴(横向)进行合并
columns
=list("ABCDE")
data
=pd
.DataFrame
([[char
+str(i
) for char
in columns
] for i
in range(12)],columns
=columns
)
df1
,df2
,df3
,df4
=data
.iloc
[:4,:4],data
.iloc
[4:8,:4],data
.iloc
[8:,:4],data
.loc
[[2,3,6,7],list('BDE')]
1.1 相同字段的表首尾相接(列对齐)
result
=pd
.concat
([df1
,df2
,df3
],axis
=0)
result
1.2 横向表拼接(行对齐)
1.2.1 axis参数
当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并
result
= pd
.concat
([df1
, df4
], axis
=1)
result
1.2.2 join参数
加上join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。
result
= pd
.concat
([df1
, df4
], axis
=1, join
='inner')
result
1.2.3 join_axes
如果有join_axes的参数传入,可以指定根据那个轴来对齐数据
例如根据df1表对齐数据,就会保留指定的df1表的轴,然后将df4的表与之拼接
result
= pd
.concat
([df1
, df4
], axis
=1, join_axes
=[df1
.index
])
result
1.2.4 无视index的concat
如果两个表的index都没有实际含义,使用ignore_index参数,置true,合并的两个表就会根据列字段对齐,然后合并。最后再重新整理一个新的index。
result
= pd
.concat
([df1
, df4
], axis
=0, ignore_index
=True)
result
1.2.5 合并的同时增加区分数据组的键
keys参数可以用来给合并后的表增加key来区分不同的表数据来源
直接用keys参数实现
result
= pd
.concat
([df1
,df2
,df3
], keys
=['x', 'y', 'z'],axis
=0)
result
传入字典来增加分组键
pieces
= {'x': df1
, 'y': df2
, 'z': df3
}
result
= pd
.concat
(pieces
,axis
=0)
result
二、df.append
append方法等价于pd.concat(axis=0)的情况
df1
.append
(df2
)
三、pd.merge
pd.merge(left, right, how=‘inner’, on=None)
可以指定按照两组数据的共同键值对合并或者左右各自left: DataFrameright: 另一个DataFrameon: 指定的共同键how:按照什么方式连接
Merge methodSQL Join NameDescription
leftLEFT OUTER JOIUse keys from left frame onlyrightRIGHT OUTER JOINUse keys from right frame onlyouterFULL OUTER JOINUse union of keys from both framesinnerINNER JOINUse intersection of keys from both frames
3.1 pd.merge合并
left
= pd
.DataFrame
({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right
= pd
.DataFrame
({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
result
= pd
.merge
(left
, right
, on
=['key1', 'key2'])
左连接
result
= pd
.merge
(left
, right
, how
='left', on
=['key1', 'key2'])
右连接
result
= pd
.merge
(left
, right
, how
='right', on
=['key1', 'key2'])
外链接
result
= pd
.merge
(left
, right
, how
='outer', on
=['key1', 'key2'])
四、总结
pd.concat([数据1, 数据2], axis=**)【掌握】
axis=0:沿0轴(纵向)进行合并axis=1:沿1轴(横向)进行合并 df1.append(df2)【掌握】pd.merge(left, right, how=, on=)【掌握】
how – 以何种方式连接on – 连接的键的依据是哪几个