Сводная таблица в python (сумма значений в столбце) - PullRequest
1 голос
/ 07 апреля 2020

У меня возникла проблема с созданием сводных таблиц. Я пытаюсь сделать это с Python. Теперь у меня есть тестовые таблицы:

Таблица 1

Я хочу сделать таблицы, которые выглядят так:

Таблица 2

Я пишу код, но у меня все еще есть два столбца, но сумма не указана.

import pandas as pd
import numpy as np


table = pd.read_excel('test.xlsx',0)
print(table.head())
print(pd.pivot_table(table,values=["A","B","C","D","E","F","G"],columns=[np.sum]))

1 Ответ

2 голосов
/ 07 апреля 2020

Вы должны Transpose кадр данных и затем суммировать столбцы (ось = 1).

Примерно так:

In [384]: table                                                                                                                                                                                                
Out[384]: 
   A  B  C
0  1  2  4
1  1  3  2

In [386]: table.T.sum(axis=1)                                                                                                                                                                                  
Out[386]: 
A    2
B    5
C    6
dtype: int64

Обновленный ответ после комментария ОП:

Если вы хотите суммировать только определенные столбцы, сделайте следующее:

In [468]: df                                                                                                                                                                                                
Out[468]: 
   A  B  C  D  E  F  G
0  1  2  4  5  6  5  6
1  2  3  2  1  2  3  4

In [469]: df[['C','D','E','F']]                                                                                                                                                                             
Out[469]: 
   C  D  E  F
0  4  5  6  5
1  2  1  2  3

In [471]: df[['C','D','E','F']].T.sum(axis=1)                                                                                                                                                               
Out[471]: 
C    6
D    6
E    8
F    8
dtype: int64
...