1
我有雅虎股票的數據,我想操縱,像這樣,大熊貓在數據幀滾動APPY
import pandas as pd
import pandas.io.data as web
data = web.DataReader('SPY','yahoo')
data.head()
Out[13]:
Open High Low Close Volume Adj Close
Date
2010-01-04 112.37 113.39 111.51 113.33 118944600 103.44
2010-01-05 113.26 113.68 112.85 113.63 111579900 103.71
2010-01-06 113.52 113.99 113.43 113.71 116074400 103.79
2010-01-07 113.50 114.33 113.18 114.19 131091100 104.23
2010-01-08 113.89 114.62 113.66 114.57 126402800 104.57
對於任何給定的日期,我想期待2天,找到最低報價爲了它。因此,對於2010-1-4,正確的答案是112.85。
現在,我可以用for循環遍歷所有日期並獲得我想要的。但我想弄清楚我是否可以用矢量化的方式來做到這一點。也許通過使用rolling_apply lambda函數。這是我迄今所做的......
def foo(x):
today = x[0]
forward = x[1:]
return (forward.min())
pd.rolling_apply(data,2,foo)
這不會起作用,因爲rolling_apply工作在一個系列,沒有獲得其他列的數據幀。
這是一個乾淨利落的方式嗎?
不是'pd.rolling_apply(data ['Low'],2,min)'做你想要的嗎? – EdChum 2014-08-29 19:41:38
是的,它確實解決了我的問題。謝謝 – nitin 2014-08-29 20:19:47
我應該發佈答案嗎? – EdChum 2014-08-29 20:21:38