在Python中,如何将上一行/值的值加到当前行/值?

3

在Python中是否可以像这样,将每行的值与之前定义的数字相加:

base_value = 10

a b c
2 3 (expected. 2+3+base_value=10)
4 3 (expected. 4+3+15=22)
1 9 (expected. 1+9+22=32)
5 7 (expected. 5+7+32=44)
1 1 (expected. 1+1+44=46)
... 

提前感谢您

4个回答

3

使用Series.cumsumSeries.add

base_value = 10
df['c'] = df['a'].add(df['b']).cumsum().add(base_value)

print (df)
   a  b   c
0  2  3  15
1  4  3  22
2  1  9  32
3  5  7  44
4  1  1  46

1

这不是最高效的方法,但您可以使用此方法:

import pandas as pd

base_value = 10
c = []
df = pd.read_csv('a.csv')
for i in range(len(df['a'])):
    base_value = df['a'][i]  + df['b'][i] + base_value
    c.append(base_value)
df['c'] = c

1

您可以使用:

df['c'] = df['a'] + df['b'] # add both columns
df.iat[0, 'c'] += 10 # add 10 to the first cell
df['c'] = df['c'].cumsum() # cumulative sum

输出:

   a  b   c
0  2  3  15
1  4  3  22
2  1  9  32
3  5  7  44
4  1  1  46

1
你可以做到:

df=pd.DataFrame({'a':[2,4,1,5,1],'b':[3,3,9,7,1]})
base=10
df['c']=base+(df['a']+df['b']).cumsum()

 df
Out[32]: 
   a  b   c
0  2  3  15
1  4  3  22
2  1  9  32
3  5  7  44
4  1  1  46

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接