如何将DataFrame的10分钟时间间隔改为30分钟并求和聚合
嘿,这个需求用Pandas处理超简单的!核心思路就是时间重采样(resample),把10分钟间隔的数据聚合到30分钟区间里,同时对数值求和。我给你一步步拆解:
步骤1:确保datetime列是时间类型
首先得把你的datetime列转换成Pandas的datetime格式——要是它现在是字符串类型,时间相关的操作根本没法正常运行:
import pandas as pd # 假设你的DataFrame名字是df df['datetime'] = pd.to_datetime(df['datetime'])
步骤2:用resample完成30分钟聚合求和
Pandas的resample()方法就是专门为时间序列重采样设计的。这里指定'30T'代表30分钟(T是分钟的缩写,也可以写成'30min'),然后调用sum()就能自动把每个30分钟区间内的value加总:
# 方法1:先把datetime设为索引,再重采样 df_resampled = df.set_index('datetime').resample('30T').sum().reset_index() # 方法2:不用改索引,直接用on参数指定datetime列 df_resampled = df.resample('30T', on='datetime').sum().reset_index()
示例验证
拿你给出的示例数据(我修正了时间间隔的笔误,改成合理的10分钟增量):
原DataFrame:
datetime value
1/1/2018 00:00:00 1
1/1/2018 00:10:00 10
1/1/2018 00:20:00 3
1/1/2018 00:30:00 6
1/1/2018 00:40:00 2
1/1/2018 00:50:00 5
运行代码后得到的结果会是:
| datetime | value |
|---|---|
| 1/1/2018 00:00:00 | 14 |
| 1/1/2018 00:30:00 | 13 |
其中00:00:00对应的是00:00-00:30区间的总和(1+10+3),00:30:00对应的是00:30-01:00区间的总和(6+2+5)。
补充小技巧
- 要是你想让时间区间从非整点开始(比如从00:10对齐),可以加
loffset='10min'参数调整 - 如果原数据有缺失的10分钟时间点,resample会自动补上空区间,value默认是0;不想保留空区间的话,加个
dropna=True就行
内容的提问来源于stack exchange,提问作者tsbeginner
相关产品推荐
相关产品推荐

