【发布时间】:2018-10-13 22:49:43
【问题描述】:
我有两个看起来像的数据框
df1:
ID A B C D
0 'ID1' 0.5 2.1 3.5 6.6
1 'ID2' 1.2 5.5 4.3 2.2
2 'ID1' 0.7 1.2 5.6 6.0
3 'ID3' 1.1 7.2 10. 3.2
df2:
ID A B C D
0 'ID1' 1.0 2.0 3.3 4.4
1 'ID2' 1.5 5.0 4.0 2.2
2 'ID3' 0.6 1.2 5.9 6.2
3 'ID4' 1.1 7.2 8.5 3.0
df1 可以有多个具有相同 ID 的条目,而每个 ID 在 df2 中只出现一次。此外,并非 df2 中的所有 ID 都必须存在于 df1 中。我无法通过使用set_index() 来解决这个问题,因为 df1 中的多行可以有相同的ID,并且 df1 和 df2 中的ID 没有对齐。
我想创建一个新的数据框,根据匹配的 ID 从 df1[['A','B','C','D']] 中减去 df2[['A','B','C','D']] 中的值。
生成的数据框如下所示:
df_new:
ID A B C D
0 'ID1' -0.5 0.1 0.2 2.2
1 'ID2' -0.3 0.5 0.3 0.0
2 'ID1' -0.3 -0.8 2.3 1.6
3 'ID3' 0.5 6.0 1.5 0.2
我知道如何使用循环来执行此操作,但由于我要处理大量数据,这根本不实用。使用 Pandas 解决此问题的最佳方法是什么?
【问题讨论】:
标签: python python-3.x pandas dataframe