熊猫在数据框上滚动

尼替尼

我有Yahoo Stock数据,我想这样处理,

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适用于Series,并且无权访问数据框上的其他列。

这是一些整洁的方法吗?

埃德·楚姆

与其调用rolling_apply整个数据框,不如调用感兴趣的列并调用min

pd.rolling_apply(data['Low'],2,min)

有趣的是,全局min函数的性能优于numpy min,考虑到我们正在做的就是找到2元素数组的最低值,这也许并不奇怪:

In [26]:

%timeit pd.rolling_apply(data['Low'],2,np.min)
%timeit pd.rolling_apply(data['Low'],2,min)
10 loops, best of 3: 15.4 ms per loop
1000 loops, best of 3: 1.44 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

熊猫:在数据框上附加一行并指定其索引标签

来自分类Dev

R在数据框上循环以创建新的数据框

来自分类Dev

熊猫在移动的数据框上滚动

来自分类Dev

熊猫数据框上的累积和函数

来自分类Dev

熊猫数据框上的数据透视表操作

来自分类Dev

熊猫数据框上的滑动窗口

来自分类Dev

滚动平均值,在数据框熊猫python中返回nan

来自分类Dev

在熊猫数据框上创建滚动自定义EWMA

来自分类Dev

在数据框上应用条件lambda语句

来自分类Dev

使用熊猫在数据框上进行按列映射和操作

来自分类Dev

如何计算熊猫数据框上的统计值?

来自分类Dev

在数据框上使用ipywidgets SelectMultiple

来自分类Dev

在数据框上找到特定的单词

来自分类Dev

具有date参数的函数以在数据框上运行

来自分类Dev

如何通过value_counts()在数据框上创建列

来自分类Dev

在熊猫数据框上创建多个索引

来自分类Dev

熊猫数据框上的怪异行为

来自分类Dev

在数据框上设置唯一索引

来自分类Dev

在数据框上使用布尔选择会导致KeyError

来自分类Dev

熊猫数据框上的摘要计算

来自分类Dev

不能再在数据框上使用sqldf(sqliteExecStatement中的错误)

来自分类Dev

熊猫在移动的数据框上滚动

来自分类Dev

R在数据框上应用功能

来自分类Dev

在数据框上移动列

来自分类Dev

熊猫:在整个数据框上拆分

来自分类Dev

在熊猫数据框上按总和分组

来自分类Dev

在数据框上使用聚合

来自分类Dev

如何在数据框上应用函数

来自分类Dev

在数据框上添加一列