Pandas 选择可在列表中找到编号的行

Pandas 选择可在列表中找到编号的行,pandas,Pandas,鉴于以下数据 我希望选择列表中出现num的行。在这种情况下,它将选择第1行和第2行,第3行未被选择,因为在[4,5]中找不到3 下面是dataframe,我们应该如何编写过滤器查询 cat1=pd.DataFrame({"num":[1,2,3], "list":[[1,2,3],[3,2],[4,5]]}) 一个可能的列表理解解决方案,中的zip和传递给: 或轴=1的解决方案,用于每行处理: df = cat1[cat1.apply(lambda x: x

鉴于以下数据

我希望选择
列表中出现
num
的行。在这种情况下,它将选择第1行和第2行,第3行未被选择,因为在
[4,5]
中找不到
3

下面是dataframe,我们应该如何编写过滤器查询

cat1=pd.DataFrame({"num":[1,2,3],
                 "list":[[1,2,3],[3,2],[4,5]]})

一个可能的列表理解解决方案,
中的
zip
传递给:

或轴=1的解决方案,用于每行处理:

df = cat1[cat1.apply(lambda x: x.num in x.list, axis=1)]
或创建
数据帧
并测试成员资格:

df = cat1[pd.DataFrame(cat1.list.tolist()).isin(cat1.num).any(axis=1)]


如果您正在使用pandas
.25
则另一种解决方案是使用:


df = cat1[pd.DataFrame(cat1.list.tolist()).isin(cat1.num).any(axis=1)]
print (df)
   num       list
0    1  [1, 2, 3]
1    2     [3, 2]
cat1[cat1['num'].isin(cat1.explode('list1').query("num==list1").loc[:,'num'])]
   num      list1
0    1  [1, 2, 3]
1    2     [3, 2]