比较熊猫中具有不同形状的两个不同数据框的两列

时间:2020-09-21 11:00:36

标签: pandas

我有两个具有相同列标题的不同数据框,例如,我想比较列内容并删除数据框A中存在但数据框B中不存在的值,

df1 = pd.DataFrame([('1', 'A',    389.0, 1.2),
           ('2', 'B',     24.0, 1.4),
           ('3',   'C',   80.5, 2.2),
           ('4', 'D', 13.4, 5)],
           columns=['items', 'Chambers', 'V','I'],
           )
df2 = pd.DataFrame([('1', 'A',    389.0, 1),
           ('2', 'E',     24.0, 2.1),
           ('3',   'C',   90.5,1.8),
           ('4', 'B', 10, 0.7),
           ('5','D',80.5,7)],
           columns=['items', 'Chambers', 'V','I'],
           )

我想删除df2中的值“ D”和“ E”,并保留所有其他值。我希望这很清楚:)

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来钱伯斯= B与钱伯斯= D情况相同,因此很难准确地理解您要做什么。在只想从一个DataFrame中获取另一合并中的行的情况下,则是一种选择。合并会创建一个组合的DataFrame,并在两个DataFrame之间具有相关数据。

例如:

df2.merge(df1, how='inner', left_on=['items', 'Chambers'], right_on=['items', 'Chambers'])

为您提供了一个组合的DataFrame,其中df1和df2之间的“项”和“室”都匹配。

  items Chambers    V_x  I_x    V_y  I_y
0     1        A  389.0  1.0  389.0  1.2
1     3        C   90.5  1.8   80.5  2.2

或者,如果您只需要钱伯斯匹配的行:

df2.merge(df1, how='inner', left_on=['Chambers'], right_on=['Chambers'])

给予:

  items_x Chambers    V_x  I_x items_y    V_y  I_y
0       1        A  389.0  1.0       1  389.0  1.2
1       3        C   90.5  1.8       3   80.5  2.2
2       4        B   10.0  0.7       2   24.0  1.4
3       5        D   80.5  7.0       4   13.4  5.0

如果那不完全是您的意思,您可以举一个预期结果的例子吗?