Pandas相邻行的求和(滚动求和)

owfi6suc  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(150)

我想知道是否有任何快速的方法来总结dataframe的besides行。我可以用python for循环来做,但它很慢,所以我想知道是否有任何方法可以在运行更快的情况下做同样的事情。
下面是一个代码示例,说明我正在尝试做什么。

import pandas as pd

dictionary = {
    'In':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
}

df = pd.DataFrame(dictionary)

forecast = 1
temp = []
for i in range(len(df["1"])):
    temp = temp + [sum(df["In"][i - forecast : i + forecast + 1])]

df["Out"] = temp

df["Out"][:forecast] = None
df["Out"][-forecast:] = None

print(df)

#Output:
    In   Out
0    1   NaN
1    2   6.0     #(1+2+3)
2    3   9.0     #(2+3+4)
3    4  12.0      ...
4    5  15.0
5    6  18.0
6    7  21.0
7    8  24.0
8    9  27.0
9   10  30.0
10  11  33.0
11  12  36.0
12  13  39.0
13  14  42.0
14  15   NaN
ulydmbyx

ulydmbyx1#

您可以使用rolling sum并设置center=True

df['Out'] = df['In'].rolling(3, center=True).sum()
df

    In   Out
0    1   NaN
1    2   6.0
2    3   9.0
3    4  12.0
4    5  15.0
5    6  18.0
6    7  21.0
7    8  24.0
8    9  27.0
9   10  30.0
10  11  33.0
11  12  36.0
12  13  39.0
13  14  42.0
14  15   NaN

相关问题