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

如何拆分DataFrame列,将无分隔符的字符串值分配到第二列

问题原因

  • 拆分用的分隔符是带前后空格的" - ",和原数据中无空格的"-"不匹配,导致有分隔符的行也没有拆分成功
  • 原生str.split对无分隔符的行默认会将全部内容存入第一列,第二列为空,不符合需求

解决方案

方法1:拆分后调整数据

import pandas as pd

# 按无空格的"-"拆分,最多拆分1次
split_res = df['COLUMN A'].str.split("-", n=1, expand=True)
# 筛选出没有分隔符的行(第二列为空)
no_sep_mask = split_res[1].isna()
# 把无分隔符行的第一列内容移到第二列,第一列设为空
split_res.loc[no_sep_mask, 1] = split_res.loc[no_sep_mask, 0]
split_res.loc[no_sep_mask, 0] = ""
# 重命名列并合并回原表
split_res.columns = ["COLUMN B", "COLUMN C"]
df = pd.concat([df, split_res], axis=1)

方法2:正则提取(更简洁)

直接用正则分组分别捕获编码和地区,一步得到符合要求的两列:

# 第一组捕获开头的数字加横杠,第二组捕获剩下的所有内容
df[['COLUMN B', 'COLUMN C']] = df['COLUMN A'].str.extract(r'^(\d+-)?(.*)$')
# 去掉编码末尾的横杠,无编码的位置填充为空字符串
df['COLUMN B'] = df['COLUMN B'].str.rstrip('-').fillna('')

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 04:57:02