在 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
)
我正在尝试有效地计算不同的特征,例如 '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
)