python - 如何通过与由不同字符分隔的另一个数据帧的结果进行比较来过滤掉一个 python pandas 数据帧中的子字符串
问题描述
如何通过比较另一个数据框来过滤数据框中的行。我的数据集由两列 Col1 和 Col2 组成。这里棘手的部分是查找 Col2 中的值由 '-' 分隔,但 Col1 由下划线 "_" 分隔。我试图通过与另一个数据框列的结果进行比较来过滤掉 col1 中的子字符串。
I have following dataset.
--------------------------------------------------
Col1 Col2 COL3 (Desired Output)
|---------------|----------------|---------------|
| One_Two_Three | Two-Three | One |
| Four_Five_Six | Five-Six | Four |
| Seven_Eight_Ni| Eight-Ni | Seven |
尝试编写以下代码但无法获得所需的输出。
df[col3]=df.apply(lambda x: x['col1'].replace(x['col2'], "").strip(),axis=1)
使用上面的代码行,我可以替换第一个子字符串(即在最后一行获得 _Six)。
也无法删除所需输出中的额外下划线。
任何帮助都将不胜感激。
解决方案
您可以添加rsrtip('_')
and lstrip('_')
which 将删除代码的前导和尾随下划线:
.replace('-','_')
编辑:您可以在 Col2 上添加一个额外的替换-
为_
.
df['Col3'] = df.apply(lambda x : x['Col1'].replace((x['Col2'].replace('-','_')), '').rstrip('_').lstrip('_'), axis=1)
印刷:
>>> df
Col1 Col2 Col3
0 One_Two_Three Two-Three One
1 Four_Five_Six Five-Six Four
2 Seven_Eight_Ni Eight-Ni Seven
这会给你你想要的结果
推荐阅读
- java - 使用改造解析键值对
- r - How to create a footer on powerpoint slide using R packages officedown and officer
- azure - How do I use synology domain name for azure
- javascript - GitHub API to retrieve files uploaded via issue comment
- python - Tensorflow not importing properly - Tensor flow version 2.3.0, Python 3.8.3
- javascript - 如何拆分命令
- javascript - How to handle facebook login with a subdomain?
- php - 无法在 swarm 模式下挂载卷
- java - 逗号分隔文本但不包含数字的正则表达式
- c# - 可以从使用 mongodb c# 驱动程序 AscendingGuidGenerator 生成的 GUID 中提取时间戳吗?