df1 = {
'vouchers': [100, 200, 300, 400],
'units': [11, 12, 12, 13],
'some_other_data': ['a', 'b', 'c', 'd'],
}
df2 = {
'vouchers': [500, 200, 600, 300],
'units': [11, 12, 12, 13],
'some_other_data': ['b', 'd', 'c', 'a'],
}
鉴于上面的两个数据帧,我想执行以下操作:如果可以在
df1
中找到来自 df2
的凭证,并且它们对应的单位相同,则从 df1
中删除整个凭证行。因此,在这种情况下,所需的输出将是:
df1 = {
'vouchers': [100, 300, 400],
'units': [11, 12, 13],
'some_other_data': ['a', 'c', 'd'],
}
实现这一目标的最佳方法是什么?
最佳答案
您可以使用 pd.Index.isin
使用索引操作有效地执行此操作:
u = df1.set_index(['vouchers', 'units'])
df1[~u.index.isin(pd.MultiIndex.from_arrays([df2.vouchers, df2.units]))]
vouchers units some_other_data
0 100 11 a
2 300 12 c
3 400 13 d
关于python - 如果在另一个数据框中找到其列值,则从数据框中删除一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54149360/