2

我是 pandas 的新手,我正在尝试使用昨天的收盘价和今天的价格对每一行进行计算。IE:

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

然后你可以取昨天_high 和 close 列的最大值:

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 回答