熊猫与groupby一起滚动

时间:2020-07-29 19:45:01

标签: pandas rolling-computation

我正在使用win_type为'gaussian'的滚动函数。但是,当我取数据的平均值时,我收到类型错误。不确定为什么会发生这种情况,因为使用“高斯”窗口时必须输入“ std”。任何帮助表示赞赏。谢谢

TypeError: roll_mean() got an unexpected keyword argument 'std'

我提供了一个样本数据集来重新创建此问题

dummy_dta = pd.DataFrame({'id' : ['A', 'A', 'A', 'B', 'B'],
                      'value' : [2,3,4,1,4]})

dummy_dta.groupby('id')['value'].rolling(2, win_type = 'gaussian', min_period = 1).mean(std = 2)    # TypeError
dummy_dta.groupby('id')['value'].rolling(2, win_type = 'gaussian', min_period = 1).mean()    # Runs okay

1 个答案:

答案 0 :(得分:1)

您应该将熊猫的版本更新为最新版本1.1.0。

弄清楚这一点的一种好方法是检查the documentation,它包含一个与您的示例几乎相同的示例,该示例使用.sum()方法而不是.mean()但参数相同。因此,如果您的代码损坏了,而文档中的代码没有损坏,那么您可能需要更新熊猫的版本。

dummy_dta.groupby('id')['value'].rolling(2, win_type = 'gaussian', min_period = 1).mean(std = 2)

输出:

id   
A   0    NaN
    1    2.5
    2    3.5
B   3    NaN
    4    2.5
Name: value, dtype: float64

dummy_dta.groupby('id')['value'].rolling(2, win_type = 'gaussian', min_period = 1).mean() 

输出:

id   
A   0    NaN
    1    2.5
    2    3.5
B   3    NaN
    4    2.5
Name: value, dtype: float64