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

如何拆分pandas DataFrame中首字符为数字的Value列值提取单位

错误原因

你的代码存在三个语法/逻辑问题:

  1. Python三元表达式要求必须完整写为值 if 条件 else 默认值,你缺失了else分支,触发语法错误
  2. 代码中str[0]的str是未定义的变量,无法直接指代当前行的Value字段值
  3. 条件判断中is <=是错误写法,is用于对象身份判断,数值比较直接用<=即可,同时你没有提前判断拆分后是否存在第二部分,容易触发索引错误

实现代码

方法1:apply自定义函数(易读性高,适合逻辑复杂的场景)

def extract_unit(val):
    # 处理空白字符串
    val = val.strip()
    if not val:
        return ""
    # 校验首字符是否为数字
    if not val[0].isdigit():
        return ""
    # 仅拆分第一个空格,避免单位本身带空格的情况
    parts = val.split(" ", maxsplit=1)
    if len(parts) < 2:
        return ""
    unit = parts[1].strip()
    # 校验单位长度是否符合要求
    return unit if len(unit) <=5 else ""

df['Unit'] = df['Value'].apply(extract_unit)

方法2:向量化操作(性能更高,适合百万级以上的大数据量)

# 拆分数值和单位
split_val = df['Value'].str.split(" ", n=1, expand=True)
# 构造判断条件
cond1 = df['Value'].str.strip().str[0].str.isdigit().fillna(False)
cond2 = split_val[1].str.strip().str.len().le(5).fillna(False)
# 符合条件赋值单位,否则填空字符串
df['Unit'] = split_val[1].str.strip().where(cond1 & cond2, "")

两种方法运行后都可以得到你期望的输出结果,80 degrees因为拆分后的degrees长度超过5,所以不会被提取单位,符合要求。


内容的提问来源于stack exchange,提问作者Al-Andalus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:04