python - 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 根本没有出现。
谢谢!
解决方案
第一种方式(在这种情况下是更好的方式):
使用合并:
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()
推荐阅读
- python-3.x - 使用snakemake checkpoint + 聚合从互联网获取未知数量的ID
- solidity - 它如何管理私钥松露?
- java - 使用 Apache Commons VFS 上传到远程 FTP 服务器
- java - 如何使用 Mockito 在单元测试中模拟 ObservableTransformer
- css - 使用混合线性梯度和径向梯度
- html - css nth-of-type 不适用于 safari (mac)
- javascript - 是否有任何理由在 Node.js 中“.destroy()”一个可读流?
- asp.net - 文本框值不在预期范围内
- emacs - Beancount:使用“:”符号作为注释符号,如;做
- graph - 制造质量的图形数据库建模