【发布时间】:2014-09-04 06:02:01
【问题描述】:
与Fun with Pandas `rolling_apply` and TypeError 和Using rolling_apply on a DataFrame object 相关
假设 F 是一个返回函数的函数,而 df 是一个带有日期时间索引的 Series。
以下似乎有效:
df.groupby(pandas.TimeGrouper('10d')).apply(F)
虽然以下结果会导致 TypeError,因为 rolling_apply 似乎期望浮点数作为返回值。
pandas.rolling_apply(df, 10, F)
我实际上想要后者,因为我想按 10 天的每个窗口进行分组,而不是像我认为 TimeGrouper 那样对每个 10 天窗口的可用数据进行分组。
有没有使用其他函数的直接方法?
举个具体的例子,这似乎是有效的:
from statsmodels.tools.tools import ECDF
s = pandas.Series(randn(1000))
s.index = pandas.date_range('2012-01-01', periods=s.shape[0], freq='D')
f = s.groupby(pandas.TimeGrouper('30D')).apply(ECDF)
f.apply(lambda x: x(0.1)).head()
【问题讨论】:
-
如果
F是一个返回函数的函数,那么我不确定df.groupby(pandas.TimeGrouper('10d')).apply(F)将如何工作。能举个具体的例子吗? -
我添加了一个返回函数的示例。