Python 使用列表筛选列表

Python 使用列表筛选列表,python,pandas,Python,Pandas,如何获取所有的“id”,从而使“combo”列表中的元素与“search”列表中的任何元素匹配 # setup df d = {'id': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}, 'combo': {0: ['a', 'b'], 1: ['a'], 2: ['c', 'd'], 3: ['c', 'e'], 4: ['d'], 5: ['c', 'f']}} df = pd.DataFrame(d) search = ['a','d'] 下面的方法

如何获取所有的“id”,从而使“combo”列表中的元素与“search”列表中的任何元素匹配

# setup df
d = {'id': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5},
    'combo': {0: ['a', 'b'], 1: ['a'], 2: ['c', 'd'], 3: ['c', 'e'], 4: ['d'], 5: ['c', 'f']}}
df = pd.DataFrame(d)

search = ['a','d']
下面的方法可以工作,但是我可以只获取一个id列表作为一个1行程序,而不是写入数据帧吗

df['check'] = df.apply(lambda x: any(i in search for i in x['combo']), axis=1)
df['id'][(df['check'] == True)]
尝试:

输出:

0    0
1    1
2    2
4    4
Name: id, dtype: int64
0    0
1    1
2    2
4    4
Name: id, dtype: int64
尝试:

输出:

0    0
1    1
2    2
4    4
Name: id, dtype: int64
0    0
1    1
2    2
4    4
Name: id, dtype: int64
试一试

out = df.id[pd.DataFrame(df.combo.tolist()).isin(['a','d']).any(1).values]
Out[61]: 
0    0
1    1
2    2
4    4
Name: id, dtype: int64
试一试

out = df.id[pd.DataFrame(df.combo.tolist()).isin(['a','d']).any(1).values]
Out[61]: 
0    0
1    1
2    2
4    4
Name: id, dtype: int64
您可以使用
set()

印刷品:

您可以使用
set()

印刷品: