Сводная таблица с использованием Pandas, добавьте дополнительную строку в конце с вычислением вычитания - PullRequest
0 голосов
/ 29 января 2020

У меня есть датафрейм df, выглядит следующим образом:

product    price

prod0       10
prod1       20
prod2       30
prod3       40         
cashback    30

Я хочу создать сводную таблицу, используя panda, где margin будет «GrandTot», а в конце будет дополнительная строка с CashBak "Как я могу получить вывод, как показано ниже?

col_name     price     GrandTot
Product
prod0         10         10
prod1         20         20
prod2         30         30
prod3         40         40
cashback      30         30
GrandTot      100        100
with cashbak  70         70 

1 Ответ

2 голосов
/ 29 января 2020

Преобразуйте product в индекс и добавьте новый столбец с помощью sum, также добавьте GrandTot строку с вычитанием cashback:

df = df.set_index('product')
df['GrandTot'] = df.sum(axis=1)
df.loc['GrandTot'] = df.sum().sub(df.loc['cashback'], fill_value=0)
df.loc['with cashbak'] = df.loc['GrandTot'].sub(df.loc['cashback'], fill_value=0)

print (df)
              price  GrandTot
product                      
prod0            10        10
prod1            20        20
prod2            30        30
prod3            40        40
cashback         30        30
GrandTot        100       100
with cashbak     70        70

Но, похоже, больше логик c - это всего всего sum до with cashbak:

df = df.set_index('product')
df['GrandTot'] = df.sum(axis=1)
sum = df.sum()
df.loc['GrandTot'] = sum.sub(df.loc['cashback'], fill_value=0)
df.loc['with cashbak'] = sum

print (df)
              price  GrandTot
product                      
prod0            10        10
prod1            20        20
prod2            30        30
prod3            40        40
cashback         30        30
GrandTot        100       100
with cashbak    130       130
...