1. ホーム
  2. python

[解決済み] Pandasで、dataframe.applyで前の行の値も計算されている場合に、前の行の値を使用する方法はありますか?

2022-08-13 21:49:11

質問

以下のようなデータフレームがあります。

Index_Date    A   B     C    D
================================
2015-01-31    10   10   Nan   10
2015-02-01     2    3   Nan   22 
2015-02-02    10   60   Nan  280
2015-02-03    10  100   Nan  250

要求する

Index_Date    A   B    C     D
================================
2015-01-31    10   10    10   10
2015-02-01     2    3    23   22
2015-02-02    10   60   290  280
2015-02-03    10  100  3000  250

Column C2015-01-31 を取ることで valueD .

それから、私は valueC2015-01-31 を掛け合わせ、さらに valueA2015-02-01 を追加し B .

を試しましたが applyshift を使って if else を使用すると、キーエラーが発生します。

どのように解決するのですか?

まず、派生値を作成します。

df.loc[0, 'C'] = df.loc[0, 'D']

次に、残りの行を繰り返し、計算された値を埋めます。

for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A'] + df.loc[i, 'B']


  Index_Date   A   B    C    D
0 2015-01-31  10  10   10   10
1 2015-02-01   2   3   23   22
2 2015-02-02  10  60  290  280