python - 如果列包含字符串,则返回列表
问题描述
我想检查该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 []
解决方案
你非常接近:
df['Names2'] = df['Names'].map(lambda x: [y for y in kw if y in x])
推荐阅读
- flutter - 如何在 Flutter 中制作砌体布局?
- reactjs - 当我安装material-UI时,通过create-react-app构建的React(打字稿版本)应用程序中断
- regex - 正则表达式在一个部分中查找所有两个三个或四个大写单词
- javascript - 从本地存储切换两个类
- django - 出现在 Django 身份验证模板中的随机 TextNode
- powershell - 无法在 Windows 10 上通过 Powershell 安装 Truffle sweet。弃用 mkdirp 5.x,不再保留
- google-chrome - AWS cloudfront 返回 BadRequestException X-Cache:来自云端的错误
- c++ - 如何在 C++ 中打开和关闭子应用程序
- c - atof.c 是如何工作的?从 ASCII 数字中减去 ASCII 零会使其成为 int?我错过了什么吗?
- c - 我可以在 for 循环期间更改索引的最大值吗?