Преобразуйте 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