熊猫在数据框上滚动

尼替尼

我有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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在数据框上移动列

来自分类Dev

在数据框上使用聚合

来自分类常见问题

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

来自分类Dev

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

来自分类Dev

熊猫数据框上的滑动窗口

来自分类Dev

熊猫数据框上的摘要计算

来自分类Dev

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

来自分类Dev

在数据框上使用ipywidgets SelectMultiple

来自分类Dev

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

来自分类Dev

在数据框上设置唯一索引

来自分类Dev

R在数据框上应用功能

来自分类Dev

如何在数据框上应用函数

来自分类Dev

在数据框上添加一列

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

熊猫数据框上的怪异行为

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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