Python-检查列是否包含列表中的值,返回值
我有一个df:Python-检查列是否包含列表中的值,返回值,python,pandas,Python,Pandas,我有一个df: d = {'id': [1,2,3,4,5,6,7,8,9,10], 'text': ['bill did this', 'jim did something', 'phil', 'bill did nothing', 'carl was here', 'this is random', 'other name', 'other bill', 'bill and carl', 'last one']} df
d = {'id': [1,2,3,4,5,6,7,8,9,10],
'text': ['bill did this', 'jim did something', 'phil', 'bill did nothing',
'carl was here', 'this is random', 'other name',
'other bill', 'bill and carl', 'last one']}
df = pd.DataFrame(data=d)
我想检查列是否包含列表中的值,其中列表为:
list = ['bill','carl']
那么我想退回这样的东西
id text contains
1 bill did this bill
2 jim did something
3 phil
4 bill did nothing bill
5 carl was here carl
6 this is random
7 other name
8 other bill bill
9 bill and carl bill
9 bill and carl carl
10 last one
尽管在同一行中处理两个或多个名称的方式可能会改变。
有什么建议吗?您可以创建lambda函数来检查列表中的每个项目:
d = {'id': [1,2,3,4,5,6,7,8,9,10],
'text': ['bill did this', 'jim did something', 'phil', 'bill did nothing',
'carl was here', 'this is random', 'other name',
'other bill', 'bill and carl', 'last one']}
df = pd.DataFrame(data=d)
l = ['bill','carl']
df['contains'] = df['text'].apply(lambda x: ','.join([i for i in l if i in x]))
如果需要列表,可以删除join,否则它只会连接由逗号分隔的值
输出
>>df['contains']
0 bill
1
2
3 bill
4 carl
5
6
7 bill
8 bill,carl
9
Name: contains, dtype: object
如果比尔和卡尔都有,你怎么决定<代码>可以更改:这到底意味着什么?