我有一个 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
请指教,谢谢
umuewwlo1#
直接使用numpy.arange:
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()
gopyfrb32#
或者,
import numpy as np df['add'] = np.linspace(15, 45, 7)
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
3条答案
按热度按时间umuewwlo1#
直接使用
numpy.arange
:或者:
输出:
为了好玩,一个纯粹的pandas方法(但我不会使用它):
gopyfrb32#
或者,
rjjhvcjd3#
另一种可能的解决方案:
或者,
输出: