gpt4 book ai didi

python - 创建对另一列最后 x 次出现进行求和的列

转载 作者:行者123 更新时间:2023-12-01 02:20:42 25 4
gpt4 key购买 nike

我正在尝试创建一个新列,我们将其命名为“HomeForm”,它是“HomeTeam”列中每个条目的“FTHG”最后 5 个值的总和。

对于团队 0,其想法是使用与团队 0 相对应的“FTHG”的最后 5 个值的总和填充新列上的单元格。该表按日期排序。

如何用Python实现?

        HomeTeam  FTHG   HomeForm
Date
136 0 4
135 2 0
135 4 2
135 5 0
135 6 1
135 13 0
135 17 3
135 18 1
134 11 4
134 12 0
128 1 0
128 3 0
128 8 2
128 9 1
128 13 3
128 14 1
128 15 0
127 7 1
127 16 1
126 10 1

谢谢。

最佳答案

您将在 HomeTeamgroupby,并在此处执行rolling sum,求和至少为 1周期,最多 5。

首先,定义一个函数 -

def f(x):
return x.shift().rolling(window=5, min_periods=1).sum()

此函数执行前 5 场比赛的滚动总和(因此是 shift)。将此函数传递给dfGroupBy.transform -

df['HomeForm'] = df.groupby('HomeTeam', sort=False).FTHG.transform(f)
df

HomeTeam FTHG HomeForm
Date
136 0 4 NaN
135 2 0 NaN
135 4 2 NaN
135 5 0 NaN
135 6 1 NaN
135 13 0 NaN
135 17 3 NaN
135 18 1 NaN
134 11 4 NaN
134 12 0 NaN
128 1 0 NaN
128 3 0 NaN
128 8 2 NaN
128 9 1 NaN
128 13 3 0.0
128 14 1 NaN
128 15 0 NaN
127 7 1 NaN
127 16 1 NaN
126 10 1 NaN

如果需要,用零填充 NaN 并转换为整数 -

df['HomeForm'] = df['HomeForm'].fillna(0).astype(int)

关于python - 创建对另一列最后 x 次出现进行求和的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971587/

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