2013-03-25 68 views
1

進出口新的大熊貓,我試圖從今天運行在每一行使用的收盤價從昨天一個計算和價格。即:從熊貓數據幀前一天訪問一行應用

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

你可以做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 
+0

,但我想取近今天的高點到昨天收盤。看起來這只是從今天的高位收高。 – CraigH 2013-03-25 11:15:45

+0

@CraigH這完全是,我的錯誤/誤讀。 – 2013-03-25 11:17:31

+0

@CraigH對不起,我已更新,這是你之後? – 2013-03-25 11:38:14