【发布时间】:2022-11-17 00:37:20
【问题描述】:
自昨晚以来,我一直遇到以下问题,但在任何地方都找不到任何解决方案。
给定数据框df:
team1 team2 score1 score2
0 A B 1 0
1 C A 3 2
2 B A 2 3
3 A C 2 1
我想传递一个计算函数移动平均线对于 team1 但同时考虑 team1 和 team2 列。
移动平均数 2 的输出为:
team1 team2 score1 score2 mov_avg_a
0 A B 1 2 1 # for A
1 C A 3 2 3 # for C
2 B A 2 3 2 # for B
3 A C 2 1 2 # for A
我的想法是使用自定义函数调用.apply():
步骤 1. 将 team1 和 team2 列混合到临时列 tempA 中,如果 A(例如)存在,则返回 score1 和 score2 值,如下所示:
team1 team2 score1 score2 tempA
0 A B 1 0 1
1 C A 3 2 2
2 B A 2 3 3
3 A C 2 1 2
第 2 步。将 rolling(2) 应用于 tempA 以获得所需的输出,如上所示。
我试过创建这个过程,但失败了。
我知道在大型数据帧的情况下使用 apply() 会在计算上很昂贵,但我想不出这里的“单行”解决方案。
预先感谢您的见解。
【问题讨论】: