假设我有以下数据框:
import pandas as pd
df = pd.DataFrame()
df['A'] = ('1/05/2019','2/05/2019','3/05/2019','4/05/2019','5/05/2019','6/05/2019','7/05/2019','8/05/2019','9/05/2019','10/05/2019','11/05/2019','12/05/2019','13/05/2019','14/05/2019','15/05/2019','16/05/2019','17/05/2019','18/05/2019','19/05/2019','20/05/2019')
df['B'] = ('SIT','SCLOSE', 'SHODL', 'SHODL', 'SHODL', 'SHODL', 'SHODL', 'SELL','SIT','SIT','BCLOSE', 'BHODL', 'BHODL', 'BHODL', 'BHODL', 'BHODL', 'BHODL','BUY','SIT','SIT')
df['C'] = (0.00,1.00,10.00, 5.00,6.00,-6.00, 6.00, 0.00,0.00,0.00,-8.00,33.00,-15.00,6.00,-1.00,5.00,10.00,0.00,0.00,0.00)
df.loc[19, 'D'] = 100.0000
Run Code Online (Sandbox Code Playgroud)
可以看出,我在最后一行以 100 开始 D 列。
我正在尝试为 D 列编写计算代码,因此当 B 列显示买入或卖出时,从底部行(第 19 行)开始,然后 D 列上的数字被锁定(例如 100)并用于基于每个 SHODL 或 BHODL 的 C 列,直到显示 BCLOSE 或 SCLOSE 之后的行。
锁定的数字用于根据 C 列中的百分比计算运行余额。正如您在第 16 行中看到的,C 列的“10”代表 10%。由于 100 的 10% = 10,新的运行余额为 110。
第 15 行 C 列有 5%,因此将 …