如何显示账面余额?
How to show a carrying account balance?
对于股票“策略”,我有一个 DataFrame(称为“concat”)显示位置“I”的交易利润。
假设我有一个名为“起始余额”的变量 = 1,000
我想根据初始起始余额计算每行中的可用余额,给定 profit/or 交易损失。
(上面说不允许嵌入图片所以在link中就是我要实现的例子)
我试图创建一个循环,该循环应该在每个“I”位置进行计算:
if concat['Sell at'][i] > 0:
strt_bal = Starting_Balance
number_of_shares = np.round(strt_bal / concat['Bought at'][i], 0)
trade_profit = number_of_shares * concat['Win / (loss) $ Long'][i]
strt_bal = strt_bal + trade_profit
test.append(strt_bal)
为了查看它是否有效,我检查了列表中的值,但这些值是错误的,因为它总是使用变量“起始余额”来计算。
如何才能达到 Excel 文件的预期效果?
首先,我将根据您提供的 Excel 数据创建一个模拟数据框:
import pandas as pd
df = pd.DataFrame([2500]+[None]*9,
[0]*6+[-51.2548,0,0,198.8144]).reset_index(drop=False)
df.columns = ['profit','balance']
df
profit balance
0 0.0000 2500.0
1 0.0000 NaN
2 0.0000 NaN
3 0.0000 NaN
4 0.0000 NaN
5 0.0000 NaN
6 -51.2548 NaN
7 0.0000 NaN
8 0.0000 NaN
9 198.8144 NaN
我们有利润值和期初余额,没有别的。我们要填写余额列的其余部分,替换 NaN 值。
快速修复:
for i in df.index:
df.balance[i] = list(df[~df.balance.isnull()].balance)[-1]+df.profit[i]
对于每一行,我们将在余额列中找到最后一个非空值,并将其与行中的利润值相加。这将代表该行的余额值。
现在数据框:
profit balance
0 0.0000 2500.0000
1 0.0000 2500.0000
2 0.0000 2500.0000
3 0.0000 2500.0000
4 0.0000 2500.0000
5 0.0000 2500.0000
6 -51.2548 2448.7452
7 0.0000 2448.7452
8 0.0000 2448.7452
9 198.8144 2647.5596
对于股票“策略”,我有一个 DataFrame(称为“concat”)显示位置“I”的交易利润。 假设我有一个名为“起始余额”的变量 = 1,000
我想根据初始起始余额计算每行中的可用余额,给定 profit/or 交易损失。
(上面说不允许嵌入图片所以在link中就是我要实现的例子)
我试图创建一个循环,该循环应该在每个“I”位置进行计算:
if concat['Sell at'][i] > 0:
strt_bal = Starting_Balance
number_of_shares = np.round(strt_bal / concat['Bought at'][i], 0)
trade_profit = number_of_shares * concat['Win / (loss) $ Long'][i]
strt_bal = strt_bal + trade_profit
test.append(strt_bal)
为了查看它是否有效,我检查了列表中的值,但这些值是错误的,因为它总是使用变量“起始余额”来计算。
如何才能达到 Excel 文件的预期效果?
首先,我将根据您提供的 Excel 数据创建一个模拟数据框:
import pandas as pd
df = pd.DataFrame([2500]+[None]*9,
[0]*6+[-51.2548,0,0,198.8144]).reset_index(drop=False)
df.columns = ['profit','balance']
df
profit balance
0 0.0000 2500.0
1 0.0000 NaN
2 0.0000 NaN
3 0.0000 NaN
4 0.0000 NaN
5 0.0000 NaN
6 -51.2548 NaN
7 0.0000 NaN
8 0.0000 NaN
9 198.8144 NaN
我们有利润值和期初余额,没有别的。我们要填写余额列的其余部分,替换 NaN 值。
快速修复:
for i in df.index:
df.balance[i] = list(df[~df.balance.isnull()].balance)[-1]+df.profit[i]
对于每一行,我们将在余额列中找到最后一个非空值,并将其与行中的利润值相加。这将代表该行的余额值。
现在数据框:
profit balance
0 0.0000 2500.0000
1 0.0000 2500.0000
2 0.0000 2500.0000
3 0.0000 2500.0000
4 0.0000 2500.0000
5 0.0000 2500.0000
6 -51.2548 2448.7452
7 0.0000 2448.7452
8 0.0000 2448.7452
9 198.8144 2647.5596