python - 如何从 pandas 列执行搜索和匹配以创建新列?
问题描述
我有一个 pandas 数据框,其中有一个字符串列 A。我想匹配下面列表中的特定关键字并创建一个新列。
[Android、iOS、Windows、Linux、MacOS]。
如果上述列表中没有匹配项,则新列值为“其他”。
列_A | 新列 |
---|---|
安卓10 | 安卓 |
iPhoneiOS 13.5.1 | iOS |
三星Android 9 | 安卓 |
视窗 10 | 视窗 |
iPhoneiOS 13.7 | iOS |
iOS 14.2 | iOS |
iOS 13.6 | iOS |
iOS 13.6.1 | iOS |
iOS 14.1 | iOS |
iOS 13.4.1 | iOS |
iOS 14.0.1 | iOS |
HTC安卓8.1.0 | 安卓 |
安卓 8.0.0 | 安卓 |
iOS 14.0 | iOS |
铬操作系统 | 其他 |
Windows 7的 | 视窗 |
Mac OS X 10.15.4 | 苹果系统 |
解决方案
您可以尝试以下代码:
创建虚拟数据框和要匹配的单词列表:
terms = ['Android', 'iOS','Windows']
x = pd.DataFrame({'Col1':['iPhoneiOS 13.5.1','Android10','SamsungAndroid 9','Windows 10','iPhoneiOS 13.7','iOS 14.2','Test','',np.nan]})
查找字符串的辅助函数:
def find_str(x):
for i in terms:
if i.lower() in x.lower():
return i
else:
return 'Others'
x['Match'] = x['Col1'].astype(str).apply(lambda x: 'Others' if x is None else find_str(x))
print(x)
推荐阅读
- javascript - 当网页实现时,新行消失
- sql - memsql-list 显示新添加的处于 DISCONNECTED 状态的叶节点
- sql - 如何在 HIVE 中解析 JSON?
- sql - 如何在 TDengine 中检查特定数据库的大小?
- r - 当`mjeqn`开始一行时,如何抑制回车mathjaxr添加?
- visual-studio-code - 是什么 !在 vscode 中我的文件名旁边签名
- python - 使用 Pyppeteer 连接到浏览器
- xml - xmlstarlet:按其兄弟值选择元素
- telegram - 如何访问其他频道统计信息和固定消息?
- python - Python - TQDM 在打印之前清除它上面的行