Python 使用列表筛选列表
如何获取所有的“id”,从而使“combo”列表中的元素与“search”列表中的任何元素匹配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'] 下面的方法
# 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()
:
印刷品: