2017-09-25 16 views
0

私は一種の財務予測モデルを構築しました。非常に長く、私はどのような機能を使用するのか分かりません。基本的には、前年度の計画支出を計算してから、前年度に購入したものが底を打つようにリストの優先順位を変更する必要があります。私は30年間計算しようとしています。私はこれをループで行うことができると理解していますが、支出可能な予算は毎年変わります。ここでパンダデータフレーム用に調整可能な反復関数?

は私が達成しようとしているデータフレームの例である:

Budget_Y1 = 400.00 
    Budget_Y2 = 300.00 

    DF1 
Part   RankY1  CostY1  SpendY1 RankY2 CostY2 SpendY2 

Transmission  1   400  400   4   0  0 
Tires    2   200  0   1  200  200 
Windshield  3   100  0   2  100  100 
Wipers   4   20  0   3   20  0 

私のデータは、数百万行を含む、最終的にははるかに複雑これ以上です。

今、私は毎年、前年度に基づいて計算しています。これにより、さまざまな資金調達シナリオを実行するために、毎年利用可能な予算を簡単に変更することができます。

私の質問には、毎年異なる予算で前年度に基づいて毎年計算できる関数(または関数の型)がありますので、すべての計算を手作業で行う必要はありませんか?

私はこのような機能や他の機能を実行する発電機を見ていますか? 本質的に、それは一種のamoritzation計算機に似ています。

df1.loc[(df1['RankY2']<4), 'CostY2'] = df1['CostY1'] 

    df1['Spend_Y2']= np.where((df1.Cost_Y2.cumsum(
            <=budget_Y2), df1.Cost_Y2 ,0) 

    ...Repeat some other calculations... 

    ...do new priority calculation... 

    df1 = df1.sort_values('RankY3', ascending = False) 

編集をより明確例えば:

は、今私は、予算が毎年異なるため、毎年のコストを取得するために何度出て30年以上にわたり、このコードを使用します。

+0

各年のデータ構造は何ですか? – GiantsLoveDeathMetal

+0

単純な数値例は、再現性の良いコードをもたらすのに役立ちます。 – chrisckwong821

+0

@GiantsLoveDeathMetal私はpandasのデータフレームの例を編集しました。これは役に立ちますか? – EEPBAH

答えて

1

あなたが達成しようとしていることについてまだかなり不明です。ここで

はしかし、あなたの関数をループです:

def budget_calculations(df, year_budget): 
    df.loc[(df['RankY2']<4), 'CostY2'] = df['CostY1'] 

    df['Spend_Y2'] = np.where((df.Cost_Y2.cumsum(<=year_budget), df.Cost_Y2, 0) 

    return df.sort_values('RankY3', ascending = False) 


for budget in budget_list: 
    df = budget_calculation(df, budget) 

これはbudget_list(例えば[100, 250, 300])と出力を通じて次の反復で使用される新しいpd.DataFrameを反復します。

あなたが各反復で予算を計算したい場合:

# iterate 30 times 
for n in range(30): 
    budget = calculate_budget(df, budget) 

そしてreturn来年の予算をcalculate_budgetています。

最後に、あなたはそうのような項目と予算の両方を返すことができます。

budget_each_year = [] 
for n in range(30): 
    df, budget = calculate_year(df, budget) 
    budget_each_year.append(budget) 

これは、すべての反復のための予算のリストを作成します。

関連する問題