2016-11-25 3 views
1

Привет У меня есть панды рамки работы, как:Панды накопление без для петли

1. 1 
2. 2 
3. 3 
4. 4 

И выход что-то вроде

1. 1 
2. 3   
3. 6   
4. 10 

где каждое значение является текущее значение плюс последний (3 = 1 + 2, 6 = 3 + 3, 10 = 6 + 4 и т. Д.).

Могу ли я сделать это без петли?

+0

[ 'pd.DataFrame.cumsum'] (http://pandas.pydata.org/pandas-docs /stable/generated/pandas.DataFrame.cumsum.html) - это то, что вы ищете –

+0

@ M.Klugerford Это сделает это. Благодарю. Btw для каждого значения, cumsum() суммирует все значения до этого? Если так, то это может быть не очень эффективно? Есть ли способ продолжить обновление предыдущего значения и добавить его к текущему значению? – glhclhy

ответ

1

Вам нужно Series.cumsum:

print (df) 
    col 
1.0 1 
2.0 2 
3.0 3 
4.0 4 

df['col1'] = df.col.cumsum() 
print (df) 
    col col1 
1.0 1  1 
2.0 2  3 
3.0 3  6 
4.0 4 10 

Если необходимо перезаписать столбец col:

df.col = df.col.cumsum() 
print (df) 
    col 
1.0 1 
2.0 3 
3.0 6 
4.0 10 
+0

Спасибо человек. cumsum() сделает трюк. Теперь я задаюсь вопросом, есть ли способ, который я могу обновить каждое значение при вычислении для следующего значения, вместо добавления всех предыдущих значений, я могу просто добавить его по последнему обновленному значению? – glhclhy

+0

Таким образом, выход - это только '10'? – jezrael

+0

Какой желаемый выход? – jezrael

Смежные вопросы