我有这两个数据框:
df_test
dimension1_id dimension2_id dimension3_id dimension4_id dimension5_id \
0 -1 -1 -1 -1 -1
1 1177314888 238198786 5770904146 133207291 Exact
2 1177314888 238198786 5770904266 18395155770 Exact
3 1177314888 238198786 5770904266 19338210057 Exact
4 1177314888 238198786 5770904266 30907903234 Exact
和
df_merge
dimension1_id dimension2_id dimension3_id dimension4_id dimension5_id \
0 -1 -1 -1 -1 -1
1 1177314888 238198786 5770904146 133207291 Exact
我想根据df_merge
,df_test
,dimension1_id
,{{1}的组合,从dimension2_id
移除dimension3_id
内的所有内容}和dimension4_id
。
这是我的代码:
dimension5_id
但是这段代码返回一个空数据框。如何从df_test中删除第一行和第二行?
答案 0 :(得分:5)
您可以使用逻辑索引通过应用直接比较来屏蔽所需的行。在这种情况下,您可以检查df_test
中的值df_merge
:
df_test.isin(df_merge)
生成的逻辑索引充当掩码:
dimension1_id dimension2_id dimension3_id dimension4_id dimension5_id \
0 True True True True True True
1 True True True True True True
2 False False False False False False
3 False False False False False False
4 False False False False False False
True
值映射到匹配的行,因此我们可以使用~
简单地否定索引,以仅返回df_merge
中不是df_test
的行:
df_test[~df_test.isin(df_merge)]