参数
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
需要连接的对象eg [df1, df2]
axis
axis = 0, 表示在水平方向(row)进行连接 axis = 1, 表示在垂直方向(column)进行连接
join outer
表示index全部需要; inner,表示只取index重合的部分
join_axes
传入需要保留的index
ignore_index
忽略需要连接的frame本身的index。当原本的index没有特别意义的时候可以使用
keys
可以给每个需要连接的df一个label
import pandas as pd
""" 1、pd.concat:将多个 pandas 对象,按行索引或列索引进行连接 """
f = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
f
f1 = pd.concat([f, pd.DataFrame({"A": 20, "B": 40}, index=[0])])
f1
pd.concat([f1, pd.DataFrame([9], index=[0], columns=["A"])])
|
A |
B |
0 |
1 |
2.0 |
1 |
3 |
4.0 |
0 |
20 |
40.0 |
0 |
9 |
NaN |
"""
注意:如果连接的 pandas 对象中,有任意一个对象 用于连接的索引中存在重复值,将会报错。
除非是自己与自己连接
"""
pd.concat([f1, f1], axis=1)
|
A |
B |
A |
B |
0 |
1 |
2 |
1 |
2 |
1 |
3 |
4 |
3 |
4 |
0 |
20 |
40 |
20 |
40 |
pd.concat([f1.reset_index(drop=True), pd.DataFrame([[9], [90]], index=[0, 1])], axis=1)
|
A |
B |
0 |
0 |
1 |
2 |
9.0 |
1 |
3 |
4 |
90.0 |
2 |
20 |
40 |
NaN |
f1
pd.concat([f1, pd.DataFrame([[9], [90]], index=[0, 1])], axis=1)
pd.concat([f1.reset_index(drop=True), pd.DataFrame([[9], [90]], index=[0, 0])], axis=1)
""" 2、对 ignore_index 的理解 """
f = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
f
pd.concat([f, pd.Series(20, index=[1])], axis=1)
|
A |
B |
0 |
0 |
1 |
2 |
NaN |
1 |
3 |
4 |
20.0 |
pd.concat([f, pd.Series(20, index=[1])], axis=1, ignore_index=True)
|
0 |
1 |
2 |
0 |
1 |
2 |
NaN |
1 |
3 |
4 |
20.0 |