检查“熊猫”列中是否存在列表的一个或多个元素

时间:2020-07-20 04:57:47

标签: python python-3.x pandas numpy

此问题是以下问题的扩展 Check if pandas column contains all elements from a list

在此问题中,要获取输出,将检查列表的所有成员以获取Pandas列中的列表。我需要检查列表中的一个或多个元素,即即使列表中只有一个元素在pandas列中匹配,我也要在输出中考虑

示例数据为

frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']})


letters = ['a','c','m']

我想从df中找到所有包含字母列表中一个或多个元素的行

1 个答案:

答案 0 :(得分:3)

您可以将issubset更改为isdisjoint以查找不常见的值,然后将~添加为反掩码:

letters = ['a','c','m']

letters_s = set(letters)
df = frame[~frame.a.str.split(',').map(letters_s.isdisjoint)]
print(df)
       a
0  a,b,c
1  a,c,f
3  a,z,c

或者可以通过np.any修改第一个解决方案,以测试至少一个匹配项:

contains = [frame['a'].str.contains(i) for i in letters]
df = frame[np.any(contains, axis=0)]