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

Pandas DataFrame使用applymap格式化日期字段报错求助

问题解决方法

错误原因

你的报错并非applymap处理列名导致,而是目标列(比如month)中存在字符串值'month'(大概率是数据里混入了重复的表头行),执行int(x)时无法将该字符串转为整数,从而抛出ValueError。

解决方案

根据数据情况选择以下方法:

方法1:先清理无效行(针对混入表头的情况)

如果是数据里重复出现了表头行,先删除这些无效行再格式化:

target_cols = ["month", "day", "hour", "min", "s"]
# 删除month列值为'month'的无效行
df2 = df2[df2['month'] != 'month']
# 格式化数字为两位字符串
df2[target_cols] = df2[target_cols].astype(int).applymap(lambda x: f"{x:02d}")

方法2:先转换数值类型并处理异常值

如果列中存在其他无法转成整数的无效值,先统一转换为数值类型,再格式化:

import pandas as pd

target_cols = ["month", "day", "hour", "min", "s"]
# 将列转为数值,无法转换的设为NaN
df2[target_cols] = df2[target_cols].apply(pd.to_numeric, errors='coerce')
# 格式化有效数值为两位字符串,NaN替换为'00'(可根据需求调整)
df2[target_cols] = df2[target_cols].applymap(lambda x: f"{int(x):02d}" if pd.notna(x) else '00')

方法3:直接转换格式化(确保列中全为可转数字)

如果确认列中所有值都是字符串型数字或数值,可直接转换后格式化:

target_cols = ["month", "day", "hour", "min", "s"]
df2[target_cols] = df2[target_cols].astype(int).applymap(lambda x: f"{x:02d}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:02:34