【发布时间】:2021-12-19 20:51:40
【问题描述】:
对于非递减的id,数据框df 中有借方和贷方交易。交易是随机的,但要确保帐户在任何时候都不是净借方,即在任何行累计借方金额。从贷项分录中扣除每个借项分录的最有效算法是什么,这样在从后续贷记分录中借记之前,具有最低“id”的贷记分录被用尽为零。
例如:
import pandas as pd
df = pd.DataFrame({'id':[1,1,2,3,4,4,5], 'type':['CREDIT','DEBIT','DEBIT','DEBIT','CREDIT','DEBIT','DEBIT' ], 'amount':[10.0,1.0,4.0,2.0,15.0,4.0,1.0]})
df
id type amount
0 1 CREDIT 10.0
1 1 DEBIT 1.0
2 2 DEBIT 4.0
3 3 DEBIT 2.0
4 4 CREDIT 15.0
5 4 DEBIT 4.0
6 5 DEBIT 1.0
所需的输出是:
id type amount
0 1 CREDIT 0.0 # This is 10.0 - 1.0 - 4.0 - 2.0 -(4.0-1.0)
4 4 CREDIT 13.0 # This is 15.0 - (4.0 - (4.0-1.0)) - 1.0
【问题讨论】:
-
如果数据框类似于:
df = pd.DataFrame({'id':[1,1,2,3], 'type':['CREDIT','DEBIT','CREDIT','DEBIT'], 'amount':[10,7,10,7]}),期望的输出是什么 -
@foneyoscar 将是
( id, type, amount) (1, CREDIT, 0.0) (2, CREDIT, 6.0),如下面的示例代码所示。
标签: python-3.x algorithm dataframe