gpt4 book ai didi

python - 按组 ID 获取最后第 n 行的值总和

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:21 26 4
gpt4 key购买 nike

我只想知道如何根据每行的 id 获取最后 5 个值的总和。

df:

id       values
-----------------
a 5
a 10
a 10
b 2
c 2
d 2
a 5
a 10
a 20
a 10
a 15
a 20

预期的 df:

id       values       sum(x.tail(5))
-------------------------------------
a 5 NaN
a 10 NaN
a 10 NaN
b 2 NaN
c 2 NaN
d 2 NaN
a 5 NaN
a 10 NaN
a 20 40
a 10 55
a 15 55
a 20 60

为简单起见,我尝试仅从 ID 为 a 的每一行中查找最后 5 行的值总和。

我尝试使用代码 df.apply(lambda x: x.tail(5)),但它只显示了整个 df 的最后一行的最后 5 行。我想从每一行中获取最后 n 行的总和。基本上它就像时间序列数据的rolling_sum

最佳答案

你可以像这样计算最后 5 的总和:

df["rolling As"] = df[df['id'] == 'a'].rolling(window=5).sum()["values"]

(这包括当前行作为 5 行之一。不确定这是否是您想要的)

id  values  rolling As
0 a 5 NaN
1 a 10 NaN
2 a 10 NaN
3 b 2 NaN
4 c 2 NaN
5 d 5 NaN
6 a 10 NaN
7 a 20 55.0
8 a 10 60.0
9 a 10 60.0
10 a 15 65.0
11 a 20 75.0

如果您不想包含它。你可以转移

df["rolling"] = df[df['id'] == 'a'].rolling(window=5).sum()["values"].shift()

给予:

id  values  rolling
0 a 5 NaN
1 a 10 NaN
2 a 10 NaN
3 b 2 NaN
4 c 2 NaN
5 d 5 NaN
6 a 10 NaN
7 a 20 NaN
8 a 10 55.0
9 a 10 60.0
10 a 15 60.0
11 a 20 65.0

关于python - 按组 ID 获取最后第 n 行的值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53053823/

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