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

如何对Pandas DataFrame按1小时窗口重采样并求和value列?

解决方案

步骤说明

要实现按1小时窗口分组并对value字段求和,需完成以下操作:

  1. 将date_and_time列转换为datetime类型,让Pandas能识别时间格式。
  2. 以时间列作为索引(或生成小时级分组键),通过resample或groupby完成小时级聚合。
  3. 对每个小时窗口内的value求和,得到最终结果。

代码实现

方法一:使用resample(适用于时间序列场景)

import pandas as pd

# 构造示例数据
data = {
    'index': [103819, 103820, 103821, 103822, 103823, 103824, 103825, 103826, 103827, 103828],
    'date_and_time': ['2023-12-31 16:34:17', '2023-12-31 16:34:41', '2023-12-31 16:37:29', '2023-12-31 16:39:33', '2023-12-31 16:39:59', '2023-12-31 16:40:40', '2023-12-31 16:41:36', '2023-12-31 16:42:56', '2023-12-31 16:43:24', '2023-12-31 16:43:56'],
    'value': [1]*10
}
df = pd.DataFrame(data)

# 转换时间列格式
df['date_and_time'] = pd.to_datetime(df['date_and_time'])

# 设置时间列为索引
df = df.set_index('date_and_time')

# 按小时重采样并求和
hourly_result = df['value'].resample('H').sum()

# 可选:重置索引,将时间转为列(匹配期望输出格式)
hourly_result = hourly_result.reset_index().rename(columns={'date_and_time': 'date_and_time', 'value': 'value'})
print(hourly_result)

方法二:使用groupby结合时间向下取整

# 转换时间列格式
df['date_and_time'] = pd.to_datetime(df['date_and_time'])

# 生成小时级分组键(将时间向下取整到小时)
df['hour_window'] = df['date_and_time'].dt.floor('H')

# 按小时窗口分组求和
hourly_result = df.groupby('hour_window')['value'].sum().reset_index().rename(columns={'hour_window': 'date_and_time'})
print(hourly_result)

输出说明

运行代码后会得到按小时聚合的结果。针对你提供的示例数据,16:00-17:00窗口内的value总和为10;若有后续时段的数据,会自动按小时分组求和,格式与你期望的输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:47:29