Добавление второго поля в сводную таблицу с помощью pandas - PullRequest
0 голосов
/ 28 января 2020

У меня есть сводная таблица, созданная с использованием pandas (), которая выглядит следующим образом:

Type    Type-1  Type-2  Type-3  Grand Total
product             
A           5   0           0   5
B           0   6           9   15
C           0   0           0   0
D           12  7           44  63
E           6   0           0   6
Deduction   0   0           9   9
H           50  6           8   64
I           0   0           0   0
Grand Total 73  19          70  162

Теперь я хочу создать второе поле с именем "W / O Deduction", которое в основном вычтет значение для вычет из соответствующего столбца. Таким образом, конечный результат должен быть таким:

Type        Type-1  Type-2  Type-3  Grand Total
product             
A               5   0           0   5
B               0   6           9   15
C               0   0           0   0
D               12  7           44  63
E               6   0           0   6
Deduction       0   0           9   9
H               50  6           8   64
I               0   0           0   0
Grand Total     73  19          70  162
With DEDUCTION  73  19          61  153

Как мне добиться этого с помощью панды?

1 Ответ

0 голосов
/ 28 января 2020

Используйте DataFrame.loc для новой строки, заполненной вычтенными значениями всех столбцов на Series.sub с параметром fill_value=0 для замены от NaN s до 0 в счетчиках :

df.loc['W/O DEDUCTION'] = df.loc['Grand Total'].sub(df.loc['Deduction'], fill_value=0)
#alternative
#df.loc['W/O DEDUCTION'] = df.loc['Grand Total'] - df.loc['Deduction']


print (df)
               Type-1  Type-2  Type-3  Grand Total
Type                                              
A                   5       0       0            5
B                   0       6       9           15
C                   0       0       0            0
D                  12       7      44           63
E                   6       0       0            6
Deduction           0       0       9            9
H                  50       6       8           64
I                   0       0       0            0
Grand Total        73      19      70          162
W/O DEDUCTION      73      19      61          153
...