2

我有一个如下的数据框

df = pd.DataFrame({
    'x' : range(0,5),
    'y' : [[0,2],[3,4],[2,3],[3,4],[7,9]]
})

如果值在 y 列指定的列表中,我想测试 x 的每一行

df[df.x.isin(df.y)]

所以我最终会得到:

在此处输入图像描述

不知道为什么 isin() 在这种情况下不起作用

4

2 回答 2

4

df.x.isin(df.y)检查每个元素x,例如0,是否等于 的某些值df.y,例如 ,是否0等于[0,2],等等。

有了这个,你可以做一个 for 循环:

df[ [x in y for x,y in zip(df['x'], df['y'])] ]
于 2021-10-29T15:44:23.253 回答
3

让我们尝试explode使用索引loc

out = df.loc[df.explode('y').query('x==y').index.unique()]
Out[217]: 
   x       y
0  0  [0, 2]
2  2  [2, 3]
3  3  [3, 4]
于 2021-10-29T15:46:25.970 回答