此问题是以下问题的扩展 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中找到所有包含字母列表中一个或多个元素的行
答案 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)]