2

パンダは初めてで、昨日の終値と今日の価格を使用してすべての行で計算を実行しようとしています。すなわち:

for 2011-07-26:
    new_column = max(df.high['2011-07-25'], df.close['2011-07-26'])

すべての行を反復処理することを考えましたが、df.apply関数を使用する方が効率的だと思いました。しかし、関数内から前日の終値にアクセスする方法がわかりません。

これが私のデータフレームの抜粋です。

              open    high     low   close
date                                      
2011-07-22  1597.6  1607.7  1597.5  1601.5
2011-07-25  1618.2  1620.3  1609.4  1612.2
2011-07-26  1610.7  1617.5  1608.0  1616.8

これを達成するための最良の方法は何ですか?

4

1 に答える 1

2

あなたはshift最初に行うことができます:

In [8]: df['yesterday_high'] = df['high'].shift()

In [9]: df
Out[9]: 
              open    high     low   close  yesterday_high
date                                                      
2011-07-22  1597.6  1607.7  1597.5  1601.5             NaN
2011-07-25  1618.2  1620.3  1609.4  1612.2          1607.7
2011-07-26  1610.7  1617.5  1608.0  1616.8          1620.3

次に、yesterday_highの最大値を取得して、列を閉じることができます。

In [11]: df[['yesterday_high', 'close']].max(axis=1)
Out[11]: 
date
2011-07-22    1601.5
2011-07-25    1612.2
2011-07-26    1620.3

In [12] df['new_col'] = df[['yesterday_high', 'close']].max(axis=1)

または代わりに:

In [13]: df.apply(lambda x: max(x['yesterday_high'], x['close']), axis=1)
Out[13]: 
date
2011-07-22    1601.5
2011-07-25    1612.2
2011-07-26    1620.3
于 2013-03-25T09:31:27.487 に答える