【问题标题】:Vectorized version of sum of remaining rows剩余行总和的矢量化版本
【发布时间】:2022-10-19 17:05:03
【问题描述】:

在小数据框 df 中,我想创建一个新变量“y”。

'y' 应该是 'x' + 变量 n 的剩余行的总和。所以对于第一行我只想使用 df.n.sum()。对于第二行,我想使用 df.n.iloc[1:].sum(),依此类推。

这可以矢量化吗?

import pandas as pd

df=pd.DataFrame({'n':[4,5,6,7,8,9],
                'x':[1,2,3,4,5,6]})

df['y'] = df.x + df.n.sum() #?

我可以使用 for 循环来做到这一点并获得预期的输出。

Expected output:
output = [df.n.iloc[i:].sum() for i in range(len(df))]
print(output)

Output:
[39, 35, 30, 24, 17, 9]

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    你想要一个反向cumsum

    df['out'] = df.loc[::-1, 'n'].cumsum()
    

    输出:

       n  x  out
    0  4  1   39
    1  5  2   35
    2  6  3   30
    3  7  4   24
    4  8  5   17
    5  9  6    9
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多