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

如何用Pandas高效计算各分组最新事件的实时平均值?

高效实现方法(Pandas矢量化操作)

原始的iterrows迭代方案在数据量较大时效率极低,因为它是逐行处理,没有利用Pandas的矢量化运算优势。下面是完全基于Pandas内置功能的高效实现:

import pandas as pd

# 1. 确保timestamp为 datetime 类型并按时间排序
df['timestamp'] = pd.to_datetime(df['timestamp'])
df_sorted = df.sort_values('timestamp').reset_index(drop=True)

# 2. 生成透视表,按时间戳和公司名称整理value
# 缺失值用前向填充(获取该公司最近的有效value)
pivot_data = df_sorted.pivot_table(
    index='timestamp',
    columns='name',
    values='value'
).ffill()

# 3. 计算每个时间点下各公司最新value的平均值
aggregated_df = pivot_data.mean(axis=1).reset_index(name='value')

步骤解释

  1. 类型转换与排序:先将timestamp转为datetime类型并排序,确保后续的前向填充逻辑正确。
  2. 透视表构建:通过pivot_table将数据转换为以时间戳为行、公司名为列的结构,此时每个时间戳对应的公司value如果没有记录会显示为NaN。
  3. 前向填充:ffill()会将每个公司的NaN值填充为该公司最近一次的有效value,这就实现了"每个时间点下各公司最新事件的value"的需求。
  4. 计算平均值:对每行(每个时间戳)的所有公司value取平均,最终得到目标结果。

结果验证

该方案生成的aggregated_df与你用迭代方法得到的结果完全一致,且执行效率比迭代方法提升几个数量级,尤其在数据量较大时表现更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:12:36