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

Pandas重采样报错:TypeError: datetime.time无法执行+运算

问题分析与解决方法

错误原因

尽管你的DataFrame索引是datetime64[ns]类型,但DataFrame中存在datetime.time类型的列。resample('H').mean()会默认对所有列执行均值计算,而datetime.time类型不支持加法运算(均值计算依赖求和操作),因此触发TypeError。

解决方法

方法1:仅对数值列执行重采样

明确筛选出数值类型的列进行重采样,避开datetime.time列:

# 仅保留数值列后重采样计算均值
df_el_jan_mar_wkday.select_dtypes(include=['number']).resample('H').mean()

方法2:转换datetime.time列为可计算数值

如果需要保留时间列的信息,可先将其转换为秒数(或其他数值单位),计算均值后再转回时间格式:

import datetime

# 假设目标时间列名为'time_column'
# 将time类型转为秒数
df_el_jan_mar_wkday['time_column'] = df_el_jan_mar_wkday['time_column'].apply(
    lambda t: t.hour * 3600 + t.minute * 60 + t.second
)
# 重采样计算均值
resampled_df = df_el_jan_mar_wkday.resample('H').mean()
# 将秒数转回time类型
resampled_df['time_column'] = resampled_df['time_column'].apply(
    lambda s: datetime.time(seconds=int(s))
)

方法3:手动排除datetime.time列

直接过滤掉包含datetime.time类型的列后再重采样:

# 筛选非time类型的列
valid_cols = [
    col for col in df_el_jan_mar_wkday.columns
    if not isinstance(df_el_jan_mar_wkday[col].iloc[0], datetime.time)
]
# 重采样计算
df_el_jan_mar_wkday[valid_cols].resample('H').mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:04:55