首页 > 解决方案 > Pandas concat 不是连接,而是附加

问题描述

我希望能得到一些帮助。我正在尝试将 pandas 中的三个数据帧与多索引连接起来。其中两个工作正常,但第三个继续附加,而不是连接。它们都具有相同的多索引(我已经通过 df1.index.name == df2.index.name 对此进行了测试)

这是我尝试过的:

df_final = pd.concat([df1, df2], axis = 1)

例子:

df1
A   B    X
0   1    3
    2    4

df2
A   B    Y
0   1    20
    2    30

我想要得到的是:

df_final
A   B    X    Y
0   1    3    20
    2    4    30

但我不断得到的是:

df_final
A   B    X    Y
0   1    3    NaN
    2    4    NaN
0   1    NaN  20
    2    NaN  30

有任何想法吗?我也试过

df_final = pd.concat([df1, df2], axis = 1, keys = ['A', 'B'])

但是 df2 根本没有出现。

谢谢!

标签: pythonpandasdataframeconcatenationconcat

解决方案


第一种方式(在这种情况下是更好的方式):

使用合并:

pd.merge(left=df1, right=df2, on=['A','B'], how='inner')

第二种方式

如果你更喜欢使用 concat,你可以在它之后使用 groupby:

df_final = pd.concat([df1, df2])
df_final = df_final.groupby(['A','B']).first()

推荐阅读