Pandas从带单数字月份的日期串提取月份时出现int() base10错误如何解决
Pandas 非补零格式日期提取月份报错解决方案
你的报错原因推断完全正确:1-9月的日期格式为M/DD/YYYY,仅1位月份,截取前两位会得到带/的非法字符串,无法转换为整数。以下是两种可直接落地的处理方案:
- 方案1:按分隔符分割提取(无需修改原日期列,仅需提取月份时首选)
# 按/分割日期字符串,直接取第一个元素即为月份,再转整数 all_data['Month'] = all_data['Order Date'].str.split('/').str[0].astype('int32') all_data.head()
- 方案2:转换为标准 datetime 类型提取(推荐,适合后续有其他日期计算需求的场景)
import pandas as pd # 先将Order Date列转为pandas标准时间类型,指定对应格式即可自动识别非补零的月份 all_data['Order Date'] = pd.to_datetime(all_data['Order Date'], format='%m/%d/%Y') # 直接通过dt属性提取月份,输出本身就是整数类型无需额外转换 all_data['Month'] = all_data['Order Date'].dt.month all_data.head()
内容的提问来源于stack exchange,提问作者George Zambrano
相关产品推荐
相关产品推荐

