pandas 将固定值相加得到累计和

xvw2m8pv  于 2023-06-04  发布在  其他
关注(0)|答案(3)|浏览(169)

我有一个 Dataframe ,我想在 Dataframe 的第一个元素上加上一个固定的数字5,得到累积和

import pandas as pd

data = {'Values': [10, 5000, 6000, 7000, 8000, 9000, 8000]}
df = pd.DataFrame(data)

预期结果如下所示,第一行计算10 + 5 =15,第二行是累积和15+5 = 20,然后是20+5

请指教,谢谢

umuewwlo

umuewwlo1#

直接使用numpy.arange

step = 5
df['add'] = np.arange(1, len(df)+1)*step+df['Values'].iloc[0]

或者:

step = 5
df['add'] = np.arange(step, len(df)*step+1, step)+df['Values'].iloc[0]

输出:

Values  add
0      10   15
1    5000   20
2    6000   25
3    7000   30
4    8000   35
5    9000   40
6    8000   45

为了好玩,一个纯粹的pandas方法(但我不会使用它):

df['add'] = df.loc[[0], 'Values'].reindex(df.index).add(5, fill_value=0).cumsum()
gopyfrb3

gopyfrb32#

或者,

import numpy as np
df['add'] = np.linspace(15, 45, 7)
rjjhvcjd

rjjhvcjd3#

另一种可能的解决方案:

a = np.full(len(df), 5)
a[0] = df.iloc[0,0]
df['add'] = a.cumsum()

或者,

from itertools import accumulate
df['add'] = list(
    accumulate(range(len(df)-1), lambda acc, x: acc + 5, initial=df.iloc[0,0]))

输出:

Values  add
0      10   10
1    5000   15
2    6000   20
3    7000   25
4    8000   30
5    9000   35
6    8000   40

相关问题