如何自动化提取Pandas Series中字符串第二个下划线前的内容?
提取Pandas Series中第二个下划线之前的内容
我来帮你搞定这个字符串提取需求!针对你给出的Pandas Series,这里有两种简洁可靠的方法实现只保留第二个下划线之前的内容:
方法一:使用str.split分割拼接
这种方法直观易懂,通过分割字符串后截取目标部分再拼接:
import pandas as pd # 原始Series s = pd.Series(['abc_def_(123)', 'aerbc_dehjf_(12358)', 'aerbc_df_(89']) # 分割、截取、拼接 new_s = s.str.split('_', n=2).str[:2].str.join('_')
代码说明:
str.split('_', n=2):按下划线_分割每个字符串,最多分割2次,这样每个元素会被拆成前两个目标段+剩余内容的结构str[:2]:提取分割后的前两个部分str.join('_'):把这两个部分用下划线重新拼接起来
方法二:使用正则表达式str.extract
如果偏好正则的方式,我们可以直接匹配第二个下划线之前的所有内容:
new_s = s.str.extract(r'^([^_]+_[^_]+)', expand=False)
正则说明:
^:匹配字符串的起始位置,确保从开头开始匹配[^_]+:匹配一个或多个非下划线的字符[^_]+_[^_]+:刚好匹配到第二个下划线之前的全部内容(第一段非下划线字符 + 下划线 + 第二段非下划线字符)expand=False:让结果返回一个Series而不是DataFrame,符合你的需求
两种方法运行后,new_s都会得到你期望的结果:
0 abc_def 1 aerbc_dehjf 2 aerbc_df dtype: object
内容的提问来源于stack exchange,提问作者 owise
相关产品推荐
相关产品推荐

