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

Pandas从现有日期时间列创建新列时出现TypeError的问题求解

问题分析与解决方案

嘿,这个问题我之前处理过,咱们来搞清楚问题出在哪以及怎么修复:

错误原因

你执行了pd.to_datetime(df['start_date'])但没有将转换后的结果重新赋值给df['start_date']!这就导致df['start_date']依然保持原来的字符串(或非datetime64)类型,而Python无法直接将字符串和datetime.timedelta对象相加,所以抛出了TypeError: coercing to Unicode: need string or buffer, datetime.timedelta found这个错误。

修复方法

有两种简单的方式可以解决这个问题:

方法一:将转换后的datetime列存回原列

这是最直接的方式,确保start_date列是Pandas能识别的datetime类型后再做时间增量运算:

import datetime
import pandas as pd

# 核心步骤:把转换后的datetime对象赋值回原列
df['start_date'] = pd.to_datetime(df['start_date'])
# 现在就可以正常添加时间增量了
df['end_date'] = df['start_date'] + datetime.timedelta(days=10)

方法二:使用Pandas原生的pd.Timedelta

如果你更习惯用Pandas的专属工具,也可以用pd.Timedelta来替代Python标准库的datetime.timedelta,效果是一样的:

import pandas as pd

df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = df['start_date'] + pd.Timedelta(days=10)

额外提示:处理无效日期

如果你的start_date列里有格式不规范的日期字符串,可以在pd.to_datetime里加上errors='coerce'参数,把无效值转换成NaT(Not a Time),方便后续排查和处理:

df['start_date'] = pd.to_datetime(df['start_date'], errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:31:58