Python-Pandas-как сделать split таблицы?

Всем привет! Есть таблица, которую нужно разделить на блоки по 3 строки и затем по формуле через iloc произвести суммирование соседних клеток, а потом сложить полученные суммы. Текущий скрипт выдает список [2, 4, 6, 8, 10, 12], а должен получиться [12,30], то есть сложение 2+4+6 и 8+10+12.

Функцию split для Pandas я не нашел...

import pandas as pd
import numpy as np
cont={'Part_1':[1,2,3,4,5,6],
      'Part_2':[1,2,3,4,5,6]
      }
index_list=['r1','r2','r3','r4','r5','r6']
df = pd.DataFrame(cont,index_list)

fig=[]
for i in range(0,len(df)):
    fig_p=df.iloc[i,0]+df.iloc[i,1]
    fig.append(fig_p)

print (fig)
print(np.sum(fig))

Ответы (1 шт):

Автор решения: passant

Как-то очень странно. Вы пишите про суммирование по три элемента, а где вы это действие выполняете?

Впрочем, тут есть много разных решений, но вот одно из них максимально использующие и просто дополняющее то что вы написали.

import pandas as pd
import numpy as np
cont={'Part_1':[1,2,3,4,5,6,7,8,9],
      'Part_2':[1,2,3,4,5,6,7,8,9]
      }
index_list=['r1','r2','r3','r4','r5','r6','r7','r8','r9']
df = pd.DataFrame(cont,index_list)

fig=[]
for i in range(0,len(df)):
    fig_p=df.iloc[i,0]+df.iloc[i,1]
    fig.append(fig_p)
print (fig)
fig1=[]
for i in range (0,len(fig),3):
    fig1.append(np.sum(fig[i:i+3]))
print(fig1)

Результат:

[12, 30, 48]

Можно еще и так:

fig1=[ft.sum() for ft in np.array_split(fig, 3)]
print(fig1)

с тем-же результатом.

Конечно, если бы пришлось писать код с начала, то его можно (нужно) было бы оптимизировать.

→ Ссылка