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

如何按DataFrame时间戳列的5分钟间隔求Price列平均值并保留其他列

按5分钟间隔计算Price均值并保留其他列的解决方案

嘿,这需求很常见,我给你两种简单的实现方式,都能完美满足你的要求:

方法一:使用resample(推荐,适合时间序列场景)

首先我们可以把Event time列设置为DataFrame的索引,然后用resample按5分钟间隔分组,同时指定每列的聚合规则——Price列求均值,其他列(比如Event type和Ignore)如果在每个时间组里值是一致的,直接取组内第一个值就好:

# 将Event time设为索引
df = df.set_index('Event time')

# 按5分钟重采样,聚合各列
result_df = df.resample('5T').agg({
    'Price': 'mean',
    'Event type': 'first',
    'Ignore': 'first'
}).reset_index()

方法二:使用pd.Grouper(无需修改原索引)

如果不想改动原DataFrame的索引结构,可以用pd.Grouper指定时间列和分组频率,同样搭配agg来定义各列的处理逻辑:

result_df = df.groupby(pd.Grouper(key='Event time', freq='5T')).agg({
    'Price': 'mean',
    'Event type': 'first',
    'Ignore': 'first'
}).reset_index()

关键细节说明

  • 代码里的'5T'是pandas的时间频率代码,代表5分钟(T是分钟的缩写,同理'H'代表小时、'D'代表天)。
  • 关于其他列的聚合:如果你的Event type和Ignore在同一个5分钟组内可能有不同的值,可以根据需求替换聚合方式,比如用'unique'保留所有唯一值,或者用lambda x: ', '.join(map(str, x))把所有值拼接起来。但从你的示例数据来看,这两列值都是固定的,用'first'完全够用。

运行后你会得到类似这样的结果:

Event time Event type Ignore Price
0 2018-05-11 22:15:00 kline 0 18202364.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:25:44