考虑不同日期的仓库库存
day action quantity symbol
0 1 40 a
1 1 53 b
2 -1 21 a
3 1 21 b
4 -1 2 a
5 1 42 b
在这里,
day
代表时间序列,action
代表特定产品(buy/sell
)和symbol
的quantity
。对于此数据框,我如何计算每种产品的每日累计总和。
基本上,结果数据帧如下:
days a b
0 40 0
1 40 53
2 19 53
3 19 64
4 17 64
5 17 106
我用groupby尝试了cumsum()并没有成功
最佳答案
使用pivot_table
In [920]: dff = df.pivot_table(
index=['day', 'action'], columns='symbol',
values='quantity').reset_index()
In [921]: dff
Out[921]:
symbol day action a b
0 0 1 40.0 NaN
1 1 1 NaN 53.0
2 2 -1 21.0 NaN
3 3 1 NaN 21.0
4 4 -1 2.0 NaN
5 5 1 NaN 42.0
然后,执行
mul
操作,执行cumsum
,向前填充缺失值,最后将NaN
替换为0
In [922]: dff[['a', 'b']].mul(df.action, 0).cumsum().ffill().fillna(0)
Out[922]:
symbol a b
0 40.0 0.0
1 40.0 53.0
2 19.0 53.0
3 19.0 74.0
4 17.0 74.0
5 17.0 116.0
最后结果
In [926]: dff[['a', 'b']].mul(df.action, 0).cumsum().ffill().fillna(0).join(df.day)
Out[926]:
a b day
0 40.0 0.0 0
1 40.0 53.0 1
2 19.0 53.0 2
3 19.0 74.0 3
4 17.0 74.0 4
5 17.0 116.0 5
关于python - Pandas 仓库中的累积库存总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45658212/