使用Apply访问Pandas Dataframe中上一天的行

时间:2013-03-25 08:50:10

标签: pandas

我是大熊猫新手,我试图在每一行使用昨天的收盘价和今天的价格进行计算。即:

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

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

你可以先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

然后你可以取最近的_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