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

如何按交易次数(非时间)分组聚合Pandas行情数据?

行情数据分组聚合解决方案

原始数据

open     high     low       close    Volume
ctime                                                   
2022-11-07 01:00:00.012000+01:00  20900.0  20900.0  20900.0  20900.0     209.00
2022-11-07 01:00:00.019000+01:00  20900.1  20900.1  20900.1  20900.1    1254.00
2022-11-07 01:00:00.111000+01:00  20900.0  20900.0  20900.0  20900.0   11390.50
2022-11-07 01:00:00.188000+01:00  20900.1  20900.1  20900.1  20900.1      20.90
2022-11-07 01:00:00.194000+01:00  20900.0  20900.0  20900.0  20900.0    4995.10
2022-11-07 01:00:00.203000+01:00  20900.0  20900.0  20900.0  20900.0     209.00
2022-11-07 01:00:00.217000+01:00  20900.0  20900.0  20900.0  20900.0  239827.50
2022-11-07 01:00:00.237000+01:00  20900.0  20900.0  20900.0  20900.0      20.90
2022-11-07 01:00:03.028000+01:00  20900.0  20900.0  20900.0  20900.0      20.90
2022-11-07 01:00:03.743000+01:00  20900.0  20900.0  20900.0  20900.0      41.80

聚合需求

按每5笔交易为一组进行聚合,规则:

  • open:取组内第一行值
  • close:取组内第五行值
  • high:取组内最大值
  • low:取组内最小值
  • Volume:取组内总和

实现代码

import pandas as pd
import numpy as np

# 假设数据已加载为DataFrame df
# 生成分组标识:每5行一组
df['group_id'] = np.arange(len(df)) // 5

# 执行聚合
aggregated_df = df.groupby('group_id').agg(
    open=('open', 'first'),
    high=('high', 'max'),
    low=('low', 'min'),
    close=('close', 'last'),  # 每组刚好5行,last对应第5行值
    Volume=('Volume', 'sum')
).reset_index(drop=True)

print(aggregated_df)

聚合结果

open     high     low    close    Volume
0  20900.0  20900.1  20900.0  20900.0   17869.5
1  20900.0  20900.0  20900.0  20900.0  240120.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:45:40