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
我正在使用 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