Pandas的groupby()方法不接受带有选项的apply()方法

4

使用以下示例:

arrays = [['one','one','one','two','two','two'],[1,2,3,1,2,3]]
df = pd.DataFrame(np.random.randn(6,2),index=pd.MultiIndex.from_tuples(zip(*arrays)),columns=['A','B'])

正如预期的那样,此应用程序适用于groupby对象:

df.groupby(level=0).apply(lambda x: pd.rolling_mean(x, window=3, center=True))

然而,在为apply指定选项时,它会抛出一个错误:
df.groupby(level=0).apply(lambda x: pd.rolling_mean(x, window=3, center=True), raw=True)    
TypeError: <lambda>() got an unexpected keyword argument 'raw'

我无法确定我的错误在哪里。

注意:对于非多重索引对象,它似乎工作得很好。

Pandas: 函数和应用于系列的时间差异

1个回答

4

对于 DataFrameGroupBy 对象,有不同的 apply 方法。只有 DataFrame.apply 方法具有 raw 参数:

help(df.apply)
# Output:
Help on method apply in module pandas.core.frame:

apply(self, func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds) method of pandas.core.frame.DataFrame instance
    Applies function along input axis of DataFrame.
...

对于groupby:

grouped = df.groupby(level=0)
help(grouped.apply)
# Output:
Help on method apply in module pandas.core.groupby:

apply(self, func, *args, **kwargs) method of pandas.core.groupby.DataFrameGroupBy instance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接