You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:35:22