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

如何对DataFrame按每2小时分组?遇AttributeError求解决

按2小时分组DataFrame的正确实现方法

你遇到的错误是因为dt属性下并没有Timedelta这个方法——pandas的DatetimeProperties(也就是datetime列调用dt后得到的对象)只提供和datetime属性相关的方法(比如取小时、日期,或者对时间做取整操作),不是用来直接创建时间间隔的。下面给你两种靠谱的实现方式:

方法1:用resample(推荐给时间序列聚合场景)

如果你需要对分组后的数值做统计(比如均值、求和),resample是专门为时间序列设计的工具,用起来很顺手:

# 先确保Time列是datetime类型(如果还没转换的话)
last8['Time'] = pd.to_datetime(last8['Time'])

# 按2小时分组,这里以计算均值为例,你可以换成sum()/max()等聚合函数
two_hour_groups = last8.resample('2H', on='Time').mean()

方法2:用groupby配合dt.floor

如果一定要用groupby,可以通过dt.floor('2H')把每个时间戳向下对齐到最近的2小时起始点,用这个对齐后的时间作为分组键:

last8['Time'] = pd.to_datetime(last8['Time'])

# 生成2小时间隔的分组键并分组
grouped = last8.groupby(last8['Time'].dt.floor('2H'))

# 遍历查看每个分组的内容(示例)
for interval_start, group_data in grouped:
    print(f"时间段:{interval_start} 至 {interval_start + pd.Timedelta(hours=2)}")
    print(group_data)
    print("---")

补充说明

  • 如果你想向上对齐时间(比如00:20的时间归到02:00的分组),可以把floor换成ceil。
  • 时间间隔的字符串格式很灵活,比如'2H'代表2小时,'30T'代表30分钟,'1D'代表1天,pandas都能识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:35