我有雅虎的股票数据,我想操纵,就像这样
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循环遍历所有的日期,得到我想要的。但我想弄清楚我是否可以用矢量化的方式来做。也许可以使用一个滚动的λ函数。这就是我到目前为止所做的。。。你知道吗
def foo(x):
today = x[0]
forward = x[1:]
return (forward.min())
pd.rolling_apply(data,2,foo)
这不起作用,因为应用程序在一个系列上工作,并且不能访问数据帧上的其他列。你知道吗
这有什么好办法吗?你知道吗
与其在整个数据帧上调用
rolling_apply
,不如在感兴趣的列上调用它并调用min
:有趣的是,global
min
函数的性能优于numpymin
,考虑到我们所做的只是找到一个2元素数组的最小值,这也许并不奇怪:相关问题 更多 >
编程相关推荐