Pandas以单列为轴透视多列:iVWAPBucket分组拆分买卖方向交易数据
解决方案
你要的输出保留了原始表的所有行(相同iVWAPBucket的买卖记录分成两行),只需要在你现有透视逻辑的基础上,拼接回原表的iVWAPBucket列,再把空值替换为-即可,全程是pandas原生向量化操作,没有额外性能开销,是最高效的实现方式:
import pandas as pd # 执行透视生成Buy、Sell列 pivot_cols = primary_breakdown_table.pivot(columns='Side', values='NotionalTraded') # 拼接原表的iVWAPBucket列,调整列顺序、填充空值 result = pd.concat( [primary_breakdown_table[['iVWAPBucket']], pivot_cols], axis=1 )[['iVWAPBucket', 'Buy', 'Sell']].fillna('-')
如果你的需求是把同一个iVWAPBucket区间的买、卖数据合并到同一行,可以用pivot_table实现:
result_merged = primary_breakdown_table.pivot_table( index='iVWAPBucket', columns='Side', values='NotionalTraded', aggfunc='sum' # 同区间多笔交易默认求和,可根据需求调整聚合逻辑 ).fillna('-').reset_index()
内容的提问来源于stack exchange,提问作者iamquitenew
相关产品推荐
相关产品推荐

