【问题标题】:How to show a carrying account balance?如何显示账面余额?
【发布时间】:2021-09-18 05:16:27
【问题描述】:

对于股票“策略”,我有一个 DataFrame(称为“concat”),它显示位置“I”的交易利润。 假设我有一个名为“起始余额”的变量 = 1,000

我想根据初始起始余额计算每行的可用余额。

(它说我不允许嵌入图片,所以在链接中是我想要实现的示例)

我试图创建一个循环,该循环应该在每个“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 文件的形式获得所需的结果?

【问题讨论】:

    标签: python pandas dataframe stock


    【解决方案1】:

    首先,我将根据您提供的 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
    

    【讨论】:

    • 如果它有帮助并且您愿意接受该解决方案,您可以点击此答案上的复选标记:)
    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2018-06-22
    • 2014-11-12
    • 1970-01-01
    • 2015-02-18
    • 2021-07-22
    • 2011-12-09
    • 2015-11-25
    相关资源
    最近更新 更多