首页 > 解决方案 > 选择可以在列表中找到数字的行

问题描述

鉴于以下数据

在此处输入图像描述

我希望选择num出现在list. 在这种情况下,它将选择第 1 行和第 2 行,第 3 行没有被选择,因为3[4,5].

以下是数据框,我们应该如何编写过滤器查询?

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

标签: pandas

解决方案


一种可能的列表理解解决方案,zipin传递给boolean indexing

df = cat1[[a in b for a, b in zip(cat1.num, cat1.list)]]

或使用DataFrame.applywithaxis=1处理每行的解决方案:

df = cat1[cat1.apply(lambda x: x.num in x.list, axis=1)]

或创建DataFrame和测试成员资格:

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]

推荐阅读