python - 从列中提取值
问题描述
我有一列包含几个由连字符分隔的数据。例如,
column A
TTT-Changing Car-BBBB-KKKK
TTT-KKKK - Changing device-KKKK
Releasing device-RRRR-KKKK-TTTT
RRRR-BBBB-Switching Car-TTTT
Login issue -RRRR-KKKK-TTTT
CCCC-Activation issue-RRRR-KKKK-TTTT
我有一个单词列表,我想从 A 列查找到 B 列。举个例子,如果 A 列包含“Changing”或“change”或“a change”,它会在 B 列中返回“Change”,如果它包含“激活”或“注册”在 B 列等中返回“激活”...
我正在寻找类似于 [if(isnumber(search( excel 中的公式 ] ) 但可以在 python 中使用的东西。
谢谢,
解决方案
您可以使用以下extract
功能:
df['column B'] = df['column A'].str.extract('(Changing[^-]*)')
df
column A column B
0 TTT-Changing Car-BBBB-KKKK Changing Car
1 TTT-KKKK - Changing device-KKKK Changing device
2 Releasing device-RRRR-KKKK-TTTT NaN
3 RRRR-BBBB-Switching Car-TTTT NaN
4 Login issue -RRRR-KKKK-TTTT NaN
5 CCCC-Activation issue-RRRR-KKKK-TTTT NaN
编辑
如果要替换内容,请考虑使用字典:
dct = {'changing': 'Change',
'change':'Change',
'activation':'Activation',
'registration':'Activation'}
pat = f"(?i).*\\b({'|'.join(dct.keys())})\\b.*"
df['column A'].str.replace(pat, lambda x: dct.get(x.group(1).lower(), None))
0 Change
1 Change
2 Releasing device-RRRR-KKKK-TTTT
3 RRRR-BBBB-Switching Car-TTTT
4 Login issue -RRRR-KKKK-TTTT
5 Activation
Name: column A, dtype: object
推荐阅读
- arrays - 为什么 C 中的指针可以在不取消引用的情况下打印他的内容?
- node.js - 如何计算节点归档器内容长度
- python - 10 分钟后请求超时,而 timeout=5
- python - Pandas:如何将字典映射到 2 列?
- python - 在 python 日志记录中显示线程 native_id
- r - 如何获得数据框中最常见的 3 个元素?
- javascript - 如何使用 webpack 在 ES6 项目中加载 Bootstrap 5 jQuery 插件?
- amazon-web-services - 预热 S3 分区
- excel - 如何从过滤器函数中删除重复项
- asp.net-core - 如何在 Razor Pages 中加载图像/字节数组