Суммировать столбцы данных кадра итеративно? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь написать какой-нибудь код, который будет проходить через go, сложить столбец 1 и столбец 2 и заменить значения в столбце 2 этой суммой. Затем я хочу добавить (новый) столбец 2 и столбец 3 и заменить столбец 3 суммой этих двух значений (и т. Д.). Я уверен, что есть лучший способ go об этом, но я думаю, что мне нужен какой-то совет о том, как это сделать sh.

Ссылка на образец данных.

Вот способ, которым я могу сделать это вручную:

dfT = pd.DataFrame({
"Column 1": np.random.rand(4),
"Column 2": np.random.rand(4),
"Column 3": np.random.rand(4),
"Column 4": np.random.rand(4),})

print(dfT.head())

dfT['Column 2'] = dfT.loc[:,'Column 1':'Column 2'].sum(axis = 1)
dfT['Column 3'] = dfT.loc[:,'Column 2':'Column 3'].sum(axis = 1)
dfT['Column 4'] = dfT.loc[:,'Column 3':'Column 4'].sum(axis = 1)
print(dfT.head())

Вот результат обоих вызовов печати:

enter image description here

Есть ли хороший способ для l oop через этот процесс? Я сейчас рисую бланк ... Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 20 февраля 2020

Вы можете использовать DataFrame.cumsum()

import numpy as np
import pandas as pd

dfT = pd.DataFrame({
    "Column 1": np.random.rand(4),
    "Column 2": np.random.rand(4),
    "Column 3": np.random.rand(4),
    "Column 4": np.random.rand(4),
})

print(dfT.head())
#    Column 1  Column 2  Column 3  Column 4
# 0  0.744905  0.831893  0.578289  0.759750
# 1  0.097360  0.436817  0.320901  0.620894
# 2  0.827297  0.653751  0.607263  0.712541
# 3  0.826755  0.841087  0.705164  0.738110

print(dfT.cumsum(axis=1))
#    Column 1  Column 2  Column 3  Column 4
# 0  0.744905  1.576798  2.155087  2.914837
# 1  0.097360  0.534177  0.855078  1.475972
# 2  0.827297  1.481048  2.088311  2.800852
# 3  0.826755  1.667841  2.373005  3.111115
...