gpt4 book ai didi

python - Pandas - 将滚动应用于列速度

转载 作者:行者123 更新时间:2023-12-05 07:25:31 30 4
gpt4 key购买 nike

我有一个数据框,其中我只取数字列的子集,计算每个数字列的 5 天滚动平均值并将其作为新列添加到 df。

这种方法可行,但目前需要相当长的时间(每列 8 秒)。我想知道是否有更好的方法来做到这一点。

我目前正在做的工作玩具示例:

data = {'Group': ['A','A','A','A','A','A','B','B','B','B','B','C','C','C','C','C'],
'Year' : ['2017', '2017', '2017', '2018', '2018', '2018', '2017', '2017', '2018', '2018', '2017', '2017', '2017', '2017', '2018', '2018'],
'Score 1' : [1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5],
'Score 2': [1,4,5,7,5,5,6,1,4,5,6,7,4,6,4,6]}
df = pd.DataFrame(data)

for col in ['Score 1', 'Score 2']:
df[col + '_avg'] = df.groupby(['Year', 'Group'])[col].apply(lambda x: x.rolling(2, 1).mean().shift().bfill())

最佳答案

对于任何登陆此的人,我能够通过先排序并避免使用 lambda 函数来显着加快速度:

return_df[col + '_avg'] = df.sort_values(['Group', 'Year']).groupby(['Group'])[col].rolling(2,1).mean().shift().values

关于python - Pandas - 将滚动应用于列速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54749136/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com