如何用Pandas按小时分组带时间戳的DataFrame并保留起始小时戳?
解决方案:按小时分组并保留起始小时时间戳
我来帮你搞定这个需求——用pandas的时间序列分组工具就能完美实现,下面给你两种常用的方法,都能让你得到带起始小时时间戳的分组均值结果:
方法1:用resample(最简洁的方式)
resample是pandas专门为时间序列数据设计的分组工具,按小时分组时默认会把分组的起始时刻作为结果的索引标签,完全匹配你的要求:
import pandas as pd # 先确保DataFrame的索引是datetime类型(如果不是先转换) df.index = pd.to_datetime(df.index) # 按小时分组,计算所有数值列的均值,结果索引就是各小时的起始时刻 hourly_result = df.resample('H').mean()
举个直观的例子:如果原数据包含10:05、10:20两个时间点的数据,resample('H')会把它们归到10:00:00这个分组下,结果的索引就是10:00:00,同时自动计算这两个数据点的均值。
方法2:用groupby结合floor('H')
如果你更习惯用groupby语法,可以把每个时间戳向下取整到小时(也就是得到所在小时的起始时刻),然后以此为分组键:
# 将索引向下取整到小时,作为分组依据 hourly_result = df.groupby(df.index.floor('H')).mean()
floor('H')会把任意时间戳转换成对应小时的起始点,比如10:15:30会变成10:00:00,分组后计算均值的结果索引就是这些标准化后的起始时刻。
小提示
- 不需要用到你之前生成的日期列,直接基于datetime索引操作更高效
- 如果你的DataFrame里混有非数值类型的列,
mean()会自动忽略这些列,只计算数值型列的均值
内容的提问来源于stack exchange,提问作者Franco
相关产品推荐
相关产品推荐

