使用pandas对含时间戳的交易数据执行分组求和、求均值等条件计算
解决方案
你可以直接使用pandas的命名聚合特性,单次分组即可完成所需计算,无需分开两次分组再合并:
# pandas 0.25 及以上版本支持的写法,直接生成目标字段 result = eur_jpy_order.groupby( ['TIMESTAMP', 'BUY_SELL_FLAG'], as_index=False # 保留分组键为普通列,无需后续reset_index ).agg( total_size=('SIZE', 'sum'), # 对SIZE字段求和,命名为total_size avg_price=('PRICE', 'mean') # 对PRICE字段求均值,命名为avg_price )
如果你使用的是更早版本的pandas,不支持命名聚合语法,可以使用字典指定聚合规则后重命名列:
result = eur_jpy_order.groupby( ['TIMESTAMP', 'BUY_SELL_FLAG'], as_index=False ).agg({ 'SIZE': 'sum', 'PRICE': 'mean' }).rename(columns={ 'SIZE': 'total_size', 'PRICE': 'avg_price' })
以上两种写法最终输出的result就是你需要的结构,仅包含TIMESTAMP、BUY_SELL_FLAG、total_size、avg_price四个字段,每个时间戳对应买、卖各一条记录(如果对应类型有数据的话)。
内容的提问来源于stack exchange,提问作者havingaball
相关产品推荐
相关产品推荐

