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

pandas根据另一列整数月份修改datetime列报TypeError如何解决

报错原因

Python 原生 datetime 对象的 replace() 方法仅支持接收单个整数类型的参数,而你传入的 df_final["Month"] 是 pandas Series 序列对象,无法被直接转换为单个整数,因此触发类型错误。

解决方案

方案1:矢量化构造日期(性能最优,适合大数据量)

直接使用 pandas 原生的矢量化日期构造方法,无需逐行遍历,执行效率更高:

# 提取当前日期的固定年、日
cur_year = current_day.year
cur_day = current_day.day

# 按行拼接生成新日期
df_final["Date"] = pd.to_datetime({
    "year": cur_year,
    "month": df_final["Month"],
    "day": cur_day
})

如果存在月份不合法、或对应月份没有当日(例如当前日为31、替换为2月)的场景,可以添加errors="coerce"参数,将无效日期自动转为空值NaT:

df_final["Date"] = pd.to_datetime({
    "year": cur_year,
    "month": df_final["Month"],
    "day": cur_day
}, errors="coerce")

方案2:逐行调用replace(适合小数据量,写法简洁)

如果数据量较小,可以通过apply逐行读取月份值传入replace方法:

df_final["Date"] = df_final["Month"].apply(lambda month: current_day.replace(month=month))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:24:04