我是大熊猫新手,我试图在每一行使用昨天的收盘价和今天的价格进行计算。即:
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
最好的方法是什么?
答案 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