固定数量无环元素的总和

2024-04-26 18:57:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python,它计算列中14个元素的总和,从不同的元素开始,然后将这个总和写到另一个列中。有人知道怎么做没有循环吗?你知道吗

import pandas as pd
import numpy as np

a = pd.DataFrame({"A": [i for i in range(25)]})
b = pd.DataFrame({"B": [np.nan for i in range(25)]})
for i in range(4, len(b)):
    cumsum = 0
    for k in range(i - 4, i):
        cumsum += a.A[k]
    b.B[k] = cumsum
pd.concat([a,b], axis=1)

Tags: inimportnumpy元素dataframepandasforlen
1条回答
网友
1楼 · 发布于 2024-04-26 18:57:25

你要找的是rolling(4)+sum()

In [83]: a['new'] = a.A.rolling(4).sum()

In [84]: a
Out[84]:
     A   new
0    0   NaN
1    1   NaN
2    2   NaN
3    3   6.0
4    4  10.0
5    5  14.0
6    6  18.0
7    7  22.0
8    8  26.0
9    9  30.0
10  10  34.0
11  11  38.0
12  12  42.0
13  13  46.0
14  14  50.0
15  15  54.0
16  16  58.0
17  17  62.0
18  18  66.0
19  19  70.0
20  20  74.0
21  21  78.0
22  22  82.0
23  23  86.0
24  24  90.0

支票:

In [86]: pd.concat([a,b], axis=1)
Out[86]:
     A   new     B
0    0   NaN   NaN
1    1   NaN   NaN
2    2   NaN   NaN
3    3   6.0   6.0
4    4  10.0  10.0
5    5  14.0  14.0
6    6  18.0  18.0
7    7  22.0  22.0
8    8  26.0  26.0
9    9  30.0  30.0
10  10  34.0  34.0
11  11  38.0  38.0
12  12  42.0  42.0
13  13  46.0  46.0
14  14  50.0  50.0
15  15  54.0  54.0
16  16  58.0  58.0
17  17  62.0  62.0
18  18  66.0  66.0
19  19  70.0  70.0
20  20  74.0  74.0
21  21  78.0  78.0
22  22  82.0  82.0
23  23  86.0  86.0
24  24  90.0   NaN

相关问题 更多 >