我有一个这样的csv文件:
symbol date side quantity average_price
AAPL 2020-12-31T14:28:48.019000Z buy 1 112.01
AMD 2020-12-29T19:14:21.111000Z buy 1 91.33
AMD 2020-12-29T14:28:48.019000Z sell 5 92.42
AAPL 2020-12-28T19:14:21.111000Z sell 3 115.45
AAPL 2020-12-23T14:28:48.019000Z buy 1 108.11
AAPL 2020-12-20T19:14:21.111000Z sell 2 110.03
AMD 2020-12-18T14:28:48.019000Z buy 7 88.74
AAPL 2020-12-16T19:14:21.111000Z buy 4 100.93
这只是苹果和AMD两家公司的一个小样本数据。实际的csv要比这个长得多,有更多的公司。
假设我有1股苹果和3股AMD。我需要知道我购买这些股票的交易日期和价格。所以我要找的结果是:
1 share of APPL on 2020-12-31T14:28:48.019000Z for 112.01
和
1 share of AMD on 2020-12-29T19:14:21.111000Z for 91.33
2 shares of AMD on 2020-12-18T14:28:48.019000Z for 88.74
基本上这是在先进先出的基础上计算的。AMD: 7-5+1=3和APPL: 4-2+1-3+1=1…
我真的不知道该怎么做…我在想也许可以用队列?不知怎么的?但在走上这条路之前……我想我应该把这个贴出来,看看是否有更好的方法?
通知你…当前的csv是700行…将来可能会更大。也许是7000行?如果任何解决方案涉及遍历csv,则可能相关。
以分析的方式看待它,就好像你是软件,并为自己制定(可靠的)过程规则。在文本文件中逐行查找反向查找(相对)很慢,因此可能首先将行导入到查找速度快的结构或sqlite内存数据库中。
您可以按公司和按日期进行子查询。然后,您可以通过该子查询来查找"fifo"。
我真的搞不懂排序和排序,也搞不懂怎么把买/卖组合起来,但这对你来说可能很简单。
希望能给你一些启发。