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