首页 > 解决方案 > 如果列包含字符串,则返回列表

问题描述

我想检查该Names列是否包含kw. 如果是,则返回列表。

这是数据:

import pandas as pd

df = pd.DataFrame({'Names':['APPLE JUICE','APPLE DRINK','APPLE JUICE DRINK', 'APPLE','ORANGE AVAILABLE','TEA AVAILABLE']})
kw = ['APPLE JUICE', 'DRINK', 'ORANGE', 'LEMONS', 'STRAWBERRY', 'BLUEBERRY', 'TEA COFFEE']

我试过了:

df['Names2'] = df['Names'].apply(lambda x: [k if any([k in x for k in kw]) else ''])

但它返回:

    Names   Names2
0   APPLE JUICE [<function <lambda> at 0x0000017BB875C550>]
1   APPLE DRINK [<function <lambda> at 0x0000017BB875C550>]
2   APPLE JUICE DRINK   [<function <lambda> at 0x0000017BB875C550>]
3   APPLE   []
4   ORANGE AVAILABLE    [<function <lambda> at 0x0000017BB875C550>]
5   TEA AVAILABLE   []

我期待这样的输出:

    Names   Names2
0   APPLE JUICE ['APPLE JUICE']
1   APPLE DRINK ['DRINK']
2   APPLE JUICE DRINK   ['APPLE JUICE', 'DRINK']
3   APPLE   []
4   ORANGE AVAILABLE    ['ORANGE']
5   TEA AVAILABLE   []

标签: pythonpython-3.xpandas

解决方案


你非常接近:

df['Names2'] = df['Names'].map(lambda x: [y for y in kw if y in x])

推荐阅读