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

Pandas按逗号分割字符串提取逗号前内容生成新列的实现方法

Pandas提取逗号前字段的代码修正方案

原有代码失效原因

你写的分割逻辑本身没有问题,返回NaN的核心原因是description列存在非字符串类型的值(比如数值格式的编码、空值),调用.str访问器处理时,非字符串类型的条目会被直接判定为缺失值返回NaN,和内容里是否包含Area字段无关。

修正后可直接运行的代码

方案1:适配原有split逻辑的写法

只需要在分割前先将列值统一转为字符串类型,即可覆盖所有值的处理场景:

# 先强制将description列转为字符串,再按首个逗号做单次分割
splitword = df2["description"].astype(str).str.split(",", n=1, expand=True)
df2["commondescrip"] = splitword[0]

# 如果需要保留原列的空值,不希望空值被转为字符串'nan',追加下面这行即可
import pandas as pd
df2["commondescrip"] = df2["commondescrip"].replace('nan', pd.NA)

方案2:更简洁的正则提取写法

不需要生成中间分割表,直接用正则匹配首个逗号前的所有内容,代码更精简:

# 正则匹配从字符串开头到第一个逗号前的所有内容,无逗号时自动匹配整段值
df2["commondescrip"] = df2["description"].astype(str).str.extract(r'^([^,]*)', expand=False)

处理效果验证

两种方案都能完全匹配你的需求:

  • 当description值不含逗号(如00001、00002、00004),commondescrip返回和原值完全一致的内容
  • 当description值包含逗号(如00003,Area01、00005,Area02),commondescrip返回逗号前的前缀内容(00003、00005)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:01:04