【发布时间】:2021-01-25 13:39:24
【问题描述】:
我有一个这样的数据框,
df
col1 col2
A 1
B 3
C 2
D 5
E 6
F 8
G 10
我想将 col2 的特定值的上一个和下一个 n 值相加,并将其存储到一个新列中,
所以,如果 n=2,那么数据框应该是这样的,
col1 col2 col3
A 1 6 (only below 2 values are there no upper values, so adding 3 numbers)
B 3 11 (adding one prev, current and next two)
C 2 17(adding all 4 values)
D 5 24(same as above)
E 6 31(same as above)
F 8 29(adding two prev and next one as only one is present)
G 10 24(adding with only prev two values)
当找不到前一个或后两个值时,添加任何可用的值。 我可以使用 for 循环来做到这一点,但是执行时间会很长,寻找一些 pandas 的快捷方式可以最有效地做到这一点。
【问题讨论】:
-
请问获得 col3 值的公式是什么?我无法理解
5, 11, 17, 24....的逻辑 -
@JoeFerndz , 5=1+3+2(因为只有 3 个值) 11=1+3+2+5 17=1+3+2+5+6 24=3+ 2+5+6+8
-
@Kallol 您能否为每列提供多个示例,包括它在第 3 列中开始减少的位置。此外,您还要仔细检查数字。 5 不等于第一个示例中的 1 + 3 + 2。
-
6 = (1 + 3 个值 (1 + 3 + 2)) = 理解。 11 = 6 + 2 个值 (1 + 3)。不应该是 10 而不是 11。接下来的 17 = 11 + 2 个值 (1 + 3) = 不应该是 16?这是你想要做的吗?我猜这些数字混淆了,因为您从 5 开始,然后将第一行更改为 6。我的逻辑是否正确?
-
@DavidErickson 解释了逻辑,检查编辑过的
标签: python pandas dataframe rolling-sum