在 python 中是否有更有效的循环分组函数的方法?

Is there a more efficient way of looping a group-by function in python?

我正在尝试有效地计算不同的特征,例如 'Last Game''Season Average' 等,以获得一长串不同的统计数据,我已将这些统计数据放在最后命名的 GameStatistics 中.因为有大约100个统计和100个计算(我已经在下面展示了其中一个特征'Last Game'作为示例),它变得不可行。

这是我当前的代码,其中指定统计信息的新列名是必不可少的:

for Statistic in GameStatistics:
    df[f'{Statistic} - Last Game'] = df.groupby('Name')[Statistic].shift()

有没有更快的方法来计算所有统计数据的特征,可能同时计算,从而只需要执行每个 pandas 分组函数一次?

不知道你有多少游戏数据。但是在我的测试中,你的代码 运行 即使有 1000 个统计数据也很好。

当然还有改进的余地。在使用 pandas 时,您应该寻找矢量化方法而不是依赖循环。这是一种方法:

result = pd.concat(
    [df, df.groupby("Name")[GameStatistics].shift().add_suffix(" - Last Game")],
    axis=1
)