如何按交易次数(非时间)分组聚合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
相关产品推荐
相关产品推荐

