如何基于首次下划线分割 Pandas 列为两部分
#技术教程 发布时间: 2026-01-17
使用 `str.extract()` 配合正则表达式可精准按第一个下划线将字符串列拆分为两个新列,避免 `str.split()` 产生的嵌套列表或多余分隔符问题。
在 Pandas 中,若需将类似 'Male_85__and_over' 的字符串仅按第一个下划线 _ 拆分为两段(即 gender = 'Male',age = '85__and_over'),直接使用 str.split('_', n=1) 易引入列表结构(如 ['Male', '85__and_over']),而 .str[1:] 会返回 list 类型,导致列值为 [85__and_over] —— 这显然不符合结构化分析需求。
更简洁、健壮的方案是使用 str.

test[["gender", "age"]] = test["column_Name_pivoted"].str.extract(r'^([^_]+)_((?:[^_]|_(?=[^_]))*)$')
但针对本例中“首下划线后剩余全部内容”的语义,推荐更清晰、通用的写法:
test[["gender", "age"]] = test["column_Name_pivoted"].str.extract(r'^([^_]+)_(.*)$')
✅ 解析说明:
- ^([^_]+):从开头匹配一个或多个非下划线字符(即首个字段,如 Male);
- _:字面量下划线(仅匹配第一个);
- (.*):贪婪匹配其后所有字符(包括后续的 _,如 85__and_over);
- ^ 和 $ 确保整行匹配,提升鲁棒性。
⚠️ 注意事项:
- 若原列存在不含 _ 的值(如 'Unknown'),extract() 将返回 NaN,可加 .fillna() 处理;
- str.split('_', n=1) 也可用 .str[0] 和 .str[1](非 .str[1:])提取,例如:
split_parts = test["column_Name_pivoted"].str.split('_', n=1, expand=True) test["gender"] = split_parts[0] test["age"] = split_parts[1].fillna("") # 处理无下划线情况此方式无需正则,更直观,且 expand=True 直接返回 DataFrame,推荐初学者优先尝试。
总之,str.extract() 适合需精确控制分隔逻辑的场景,而 str.split(..., expand=True) 更简洁通用——二者皆优于原始 .str[1:] 的错误用法。
技术教程SEO上一篇 : 综合素质评价模板哪里下载 学生个人填写Word模板【免费】
下一篇 : 《皇牌空战7 未知空域》全球累计销量已达700万套
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!