我有两个具有相同列标题的不同数据框,例如,我想比较列内容并删除数据框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”,并保留所有其他值。我希望这很清楚:)
谢谢!
答案 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
如果那不完全是您的意思,您可以举一个预期结果的例子吗?