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

将5分钟时间间隔合并为小时间隔时遇TypeError问题求助

解决方法

错误根源

你遇到的TypeError是因为vds2['Date']是datetime.date类型数组,vds2['Time']是datetime.time类型数组,这两种类型都无法直接和字符串' '做加法运算。要合并成可用于索引的datetime对象,需要先将它们转为字符串后再拼接,或者利用原始字段直接组合。

方案一:修复现有代码

将Date和Time列转为字符串后拼接,再转换为datetime索引:

# 转换为字符串后拼接,生成完整时间字符串
vds2.index = pd.to_datetime(vds2['Date'].astype(str) + ' ' + vds2['Time'].astype(str))
# 按小时重采样求和
vds2 = vds2.resample('H').agg({'Volume':'sum'})

方案二:简化流程(推荐)

跳过生成Date和Time中间列的步骤,直接利用原始的datestamp和timestamp字段组合成datetime索引,效率更高:

# 筛选2017年8月数据并重命名列
vds2 = vds2[(vds2['datestamp'].dt.year == 2017) & (vds2['datestamp'].dt.month == 8)]
vds2 = vds2.rename(columns={'det_vol': 'Volume'})

# 直接合并日期和时间字段为datetime索引(无需生成中间列)
# 如果timestamp是时间字符串(如"08:05:00"),可以用以下两种方式:
# 方式1:字符串拼接
vds2.index = pd.to_datetime(vds2['datestamp'].astype(str) + ' ' + vds2['timestamp'])
# 方式2:更高效的时间增量合并(推荐)
vds2.index = vds2['datestamp'] + pd.to_timedelta(vds2['timestamp'])

# 按小时重采样统计流量总和
vds2 = vds2.resample('H').agg({'Volume':'sum'})

补充说明

方案二中的pd.to_timedelta(vds2['timestamp'])可以直接将时间字符串转换为时间增量,和datestamp(datetime类型)相加得到完整的datetime对象,这种方式不需要字符串转换,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:06:19