如何根据 python 中不同大小的其他数据框中的列的值过滤数据框?
How to filter dataframe by values from columns in other dataframe thats different size in python?
嘿,我正在尝试通过 'Currency' 和 'Type'.
列中的数据帧 df1 中的值过滤数据帧 df2
df1:
Currency Type Amount
USD Buy 13003,00
EUR Sell 920,00
df2:
Currency Type Amount
USD Buy 21414,00
USD Sell 56236,00
USD Sell 15151,00
PLN Buy 1235,00
EUR Sell 951,00
EUR Buy 1451,00
EUR Buy 961,00
我想过滤 df2,以便它会删除 df1 中具有相同货币和相反类型的行。我希望得到这样的结果:
Currency Type Amount
USD Sell 56236,00
USD Sell 15151,00
EUR Buy 1451,00
EUR Buy 961,00
一种方法(虽然我不确定它是否最简单):
df3 = pd.merge(df2, df1[['Currency', 'Type']], how='left', on=['Currency']).dropna()
df3 = df3[df3['Type_x'] != df3['Type_y']]
del df3['Type_y']
最后,如果需要,您可以重命名列 'Type_x'。
嘿,我正在尝试通过 'Currency' 和 'Type'.
列中的数据帧 df1 中的值过滤数据帧 df2df1:
Currency Type Amount
USD Buy 13003,00
EUR Sell 920,00
df2:
Currency Type Amount
USD Buy 21414,00
USD Sell 56236,00
USD Sell 15151,00
PLN Buy 1235,00
EUR Sell 951,00
EUR Buy 1451,00
EUR Buy 961,00
我想过滤 df2,以便它会删除 df1 中具有相同货币和相反类型的行。我希望得到这样的结果:
Currency Type Amount
USD Sell 56236,00
USD Sell 15151,00
EUR Buy 1451,00
EUR Buy 961,00
一种方法(虽然我不确定它是否最简单):
df3 = pd.merge(df2, df1[['Currency', 'Type']], how='left', on=['Currency']).dropna()
df3 = df3[df3['Type_x'] != df3['Type_y']]
del df3['Type_y']
最后,如果需要,您可以重命名列 'Type_x'。