我有一个如下的数据框
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() 在这种情况下不起作用
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'])] ]
让我们尝试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]