为了账号安全,请及时绑定邮箱和手机立即绑定

如何基于另一列的滚动总和获得列值?

如何基于另一列的滚动总和获得列值?

慕容708150 2021-04-14 17:15:01
我想创建一个数据集,然后根据插入到第一列中的数字确定第二列的值。首先,我想创建一个包含2列的数据集(将一列保留为空白)我要创建的数据集:(我要在数字列中插入从1到50的所有连续数字) Expected Output:   Numbers      Sum      1          55   (this is the sum of first 10 consecutive numbers)    2          65   (this is the sum of consecutive 10 numbers from 2 to 11)    3          75   (this is the sum of consecutive 10 numbers from 3 to 12)    4          85   (this is the sum of consecutive 10 numbers from 4 to 13)    5    6    7    8     9     10     11     12    13依此类推,我想通过在列号中插入1到50的值来计算1到50的值的总和,并获取10个连续数字的总和。
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

可以,但是首先获得或NaN的rolling:


df['a'] = df['Numbers'].rolling(10).sum()

print (df)

    Numbers     a

0         1   NaN

1         2   NaN

2         3   NaN

3         4   NaN

4         5   NaN

5         6   NaN

6         7   NaN

7         8   NaN

8         9   NaN

9        10  55.0

10       11  65.0

11       12  75.0

12       13  85.0

df['a'] = df['Numbers'].rolling(10).sum().shift(-9)

print (df)

    Numbers     a

0         1  55.0

1         2  65.0

2         3  75.0

3         4  85.0

4         5   NaN

5         6   NaN

6         7   NaN

7         8   NaN

8         9   NaN

9        10   NaN

10       11   NaN

11       12   NaN

12       13   NaN

或使用参数min_periods=1与间隔数1,1-2,1-3...为填充第一NaNS:


df['a'] = df['Numbers'].rolling(10, min_periods=1).sum()

print (df)

    Numbers     a

0         1   1.0

1         2   3.0

2         3   6.0

3         4  10.0

4         5  15.0

5         6  21.0

6         7  28.0

7         8  36.0

8         9  45.0

9        10  55.0

10       11  65.0

11       12  75.0

12       13  85.0

编辑:


如果有可能添加下一个价值观-这里的范围1来61那么可以创建滚动,然后删除最后NaNs行:


df = pd.DataFrame({'Numbers':range(1, 61)})


df['a'] = df['Numbers'].rolling(10).sum().shift(-9)

df = df.iloc[:50]

print (df)

    Numbers      a

0         1   55.0

1         2   65.0

2         3   75.0

3         4   85.0

4         5   95.0

5         6  105.0

6         7  115.0

7         8  125.0

8         9  135.0

9        10  145.0

10       11  155.0

11       12  165.0

12       13  175.0

13       14  185.0

14       15  195.0

15       16  205.0

16       17  215.0

17       18  225.0

18       19  235.0

19       20  245.0

20       21  255.0

21       22  265.0

22       23  275.0

23       24  285.0

24       25  295.0

25       26  305.0

26       27  315.0

27       28  325.0

28       29  335.0

29       30  345.0

30       31  355.0

31       32  365.0

32       33  375.0

33       34  385.0

34       35  395.0

35       36  405.0

36       37  415.0

37       38  425.0

38       39  435.0

39       40  445.0

40       41  455.0

41       42  465.0

42       43  475.0

43       44  485.0

44       45  495.0

45       46  505.0

46       47  515.0

47       48  525.0

48       49  535.0

49       50  545.0


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号