使用 `str.extract()` 配合正则表达式可精准按第一个下划线将字符串列拆分为两部分,避免 `str.split()` 产生的嵌套列表或多余下划线干扰。
在 Pandas 中,若需将一列字符串(如 'Male_85__and_over')仅按第一个下划线 _ 拆分为两个字段(gender 和 age),直接使用 str.split('_', n=1) 虽然能限制分割次数,但其返回结果为列表(如 ['Male', '85__and_over']),后续需额外处理(如 .str[1])才能提取第二部分;而若误用 .str[1:](如原代码所示),会得到包含方括号的列表对象 ['85__and_over'],导致数据类型错误和显示异常。
✅ 正确做法是使用 str.extract() 方法,配合捕获组正

test[["gender", "age"]] = test["column_Name_pivoted"].str.extract(r'([^_]+)_([^_]+)')
但原始示例中值为 'Male_85__and_over',其首个 _ 后实际是 '85__and_over'(含多个 _)。若目标是提取 第一个 _ 后的全部剩余内容(而非截止到第二个 _),应改用更鲁棒的正则:
test[["gender", "age"]] = test["column_Name_pivoted"].str.extract(r'^([^_]+)_(.*)$')
? 补充说明:
综上,推荐统一使用带锚点的正则 r'^([^_]+)_(.*)$',兼顾准确性、可维护性与边界兼容性。