Pandas 使用 groupby 滚动

Pandas rolling with groupby

我正在使用 win_type 作为 'gaussian' 的滚动函数。但是,当我计算数据的平均值时,我收到了类型错误。不确定为什么会发生这种情况,因为在使用 'gaussian' window 时 '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

您应该将您的 pandas 版本更新到最新版本 1.1.0,正如评论中指出的那样。

解决这个问题的一个好方法是检查 the documentation,它包含一个与您的示例几乎相同的示例,使用 .sum() 方法而不是 .mean() 但具有相同的参数。因此,如果您的代码中断而文档中的代码没有,那么您可能需要更新 pandas.

的版本
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