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

Pandas处理工时列:按值长度提取数字遇AttributeError问题求助

问题解决

错误原因

你报错是因为extract()是Pandas Series的str访问器方法,只能对整列(Series)调用,而apply里的x是单个字符串对象,字符串本身没有extract方法,所以触发AttributeError。

解决方案

方法1:直接用Pandas整列处理(更简洁)

不需要单独判断字符串长度,str.extract会自动提取所有行中的数字(包括小数),对于本身就是短数字的行也能正确处理:

# 先转成字符串,确保所有值都能被正则处理
df['Hours_per_week'] = df['Hours_per_week'].astype(str).str.extract('(\d+\.?\d*)')[0]

正则(\d+\.?\d*)用来匹配整数(如40)和小数(如46.25),[0]是将extract返回的DataFrame转为Series。

方法2:保留长度判断的自定义处理

如果一定要坚持“长度大于2才提取”的逻辑,需要用Python标准库re模块来处理单个字符串:

import re

df['Hours_per_week'] = df['Hours_per_week'].apply(
    lambda x: re.search(r'(\d+\.?\d*)', str(x)).group() if len(str(x)) > 2 else x
)

re.search会找到字符串中第一个匹配的数字(含小数),group()取出匹配结果;长度≤2的行直接保留原值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:20:27