我有一个事务数据框架,如下所示:
Item Date Code Qty Price Value
0 A 01-01-01 Buy 10 100.5 1005.0
1 A 02-01-01 Buy 5 120.0 600.0
2 A 03-01-01 Sell 12 125.0 1500.0
3 A 04-01-01 Buy 9 110.0 990.0
4 A 04-01-01 Sell 1 100.0 100.0
#and so on... there are a million rows with about thousand items (here just one item A)
我想要的是以先进先出的顺序方式,将每个销售交易与购买交易进行映射。因此,最先购买的商品将首先售罄。
为此,我添加了一个新专栏
bQty
期初余额与采购数量相同。然后,我迭代每个销售交易的数据帧,以在该日期之前将销售数量与购买交易进行对比。
df['bQty'] = df[df['Code']=='Buy']['Quantity']
for each in df[df['Code']=='Sell']:
for each in df[(df['Code']=='Buy') & (df['Date'] <= sellDate)]:
#code#
现在,这需要我一遍又一遍地检查每个销售交易的整个数据帧。
对于1000条记录,大约需要10秒才能完成。所以,我们可以假设,对于一百万条记录来说,这种方法需要很多时间。
有没有更快的方法?