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

如何为DataFrame中各城市单独应用rolling_mean滚动均值函数?

按城市独立计算滚动平均值的实现方案

前置准备

首先确保你的datetime列是datetime时间类型,如果还没转换,执行以下代码:

import pandas as pd
df['datetime'] = pd.to_datetime(df['datetime'])

高效实现方式

针对500+城市的场景,直接用groupby结合rolling就能实现每个城市独立计算滚动均值,无需额外复杂逻辑:

# 为每个城市单独计算过去1小时的滚动平均值
df['rolling_mean'] = df.groupby('city').apply(
    lambda g: g.set_index('datetime')['value'].rolling('1h').mean()
).reset_index(level=0, drop=True)

适配你原有函数的写法

如果想保留你定义的rolling_mean函数,调整函数逻辑后结合groupby使用:

def rolling_mean(group):
    # 针对单个城市的子数据集计算滚动均值
    return group.set_index('datetime')['value'].rolling('1h').mean().values

# 分组应用函数并展开结果
df['rolling_mean'] = df.groupby('city').apply(rolling_mean).explode()

核心说明

  • groupby('city')会自动将原数据按城市拆分,每个城市的计算完全独立,不会出现跨城市的均值干扰。
  • Pandas原生的分组操作对几百个分组的处理效率足够,无需担心性能问题。
  • 必须保证datetime列是datetime类型,否则rolling('1h')的时间窗口参数无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:36:25