从熊猫df中选择行,其中索引出现在另一个df中的某个位置

时间:2019-06-25 08:45:56

标签: python pandas dataframe

假设以下内容:

df1:

x    y     z
1    10    11
2    20    22
3    30    33
4    40    44
1    20    21
1    30    31
1    40    41
2    10    12
2    30    32
2    40    42
3    10    31
3    20    23
3    40    43
4    10    14
4    20    24
4    30    34

df2:

x    b
1    100
2    200

df3:

y    c
10   1000
20   2000

我想要df1中的所有行,分别在xy中出现df2df3的情况,在这种情况下

退出:

x    y     z
1    10    11
2    20    22
1    20    21
1    30    31
1    40    41
2    10    12
2    30    32
2    40    42
3    10    31
3    20    23
4    10    14
4    20    24

我想在纯熊猫中做到这一点,没有for循环,对我来说似乎已经足够标准了,但是我真的不知道要寻找什么

1 个答案:

答案 0 :(得分:3)

您可以在两种情况下都使用isin,将条件与bitwise OR链接起来,并对数据框执行boolean indexation,结果如下:

df1[df1.x.isin(df2.x) | df1.y.isin(df3.y)]