如何在pandas中计算买卖交易的累计持仓数量?

Pandas 计算累计持仓的实现方法
核心逻辑
把买卖方向映射为正负系数,buy对应1(累加交易量),sell对应-1(扣减交易量),转换后直接调用cumsum()累加即可得到累计持仓。
完整代码示例
import pandas as pd # 可替换为你自己的数据集读取代码,比如pd.read_excel/ pd.read_csv df = pd.DataFrame({ '数量': [3, 2, 5, 1], '买卖': ['buy', 'sell', 'buy', 'sell'] }) # 方式1:分步骤写,逻辑更清晰 # 1. 把交易量转为带正负的数值 df['sign_qty'] = df['数量'] * df['买卖'].map({'buy': 1, 'sell': -1}) # 2. 累加得到累计持仓 df['累计持仓'] = df['sign_qty'].cumsum() # 方式2:一步完成,不需要生成中间列 df['累计持仓'] = (df['数量'] * df['买卖'].map({'buy': 1, 'sell': -1})).cumsum()
注意事项
如果你的数据还没有按交易时间排序,需要先调用df = df.sort_values('交易时间字段名')按时间正序排序后再做计算,才能得到正确的累计持仓序列。
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

