如何在Pandas DataFrame中去除连字符/括号后的内容并保留分隔项
Pandas单列字符串处理:提取特殊字符前内容并重组
需求说明
现有单列Pandas DataFrame,列中元素为逗号分隔的多段字符串。需完成以下处理:
- 对每段字符串,去除**连字符(含自身)或括号(含自身)**之后的所有内容,仅保留特殊字符前的部分
- 将处理后的各段用空格分隔,替换原列内容
示例数据
import pandas as pd dd = pd.DataFrame() dd['sin'] = [ 'U147(BCM), U35(BCM)', 'P01-00(ECM), P02-00(ECM)', 'P3-00(ECM), P032-00(ECM)', 'P034-00(ECM)', 'P23F5(PCM), P04-00(ECM)' ]
解决方案
方法1:拆分+遍历处理(直观易懂)
通过拆分逗号分隔项,逐个提取目标内容后重新拼接:
# 拆分每个单元格的字符串,处理后重新拼接 dd['sin'] = dd['sin'].str.split(', ').apply( lambda items: ' '.join([item.split('-')[0].split('(')[0] for item in items]) )
方法2:正则替换(简洁高效)
利用正则表达式一次性匹配并替换不需要的内容:
# 替换-或(之后到分隔符/结尾的内容,再替换逗号分隔为空格 dd['sin'] = dd['sin'].str.replace(r'(-|\().*?(?=, |$)', '', regex=True).str.replace(', ', ' ')
预期输出
print(dd['sin']) # 输出: 0 U147 U35 1 P01 P02 2 P3 P032 3 P034 4 P23F5 P04 Name: sin, dtype: object
内容的提问来源于stack exchange,提问作者Sushil Kokil
相关产品推荐
相关产品推荐

