["python","pandas"]
Pandas dataframe total row

I have a dataframe, something like: foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 and I would like to add a 'total' row to the end of dataframe: foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 5 total 18 9.47 I've tried to use the sum command but I end up with a Series, which although I can convert back to a Dataframe, doesn't maintain the data types: tot_row = pd.DataFrame(df.sum()).T tot_row['foo'] = 'tot' tot_row.dtypes: foo object bar object qux object I would like to maintain the data types from the original data frame as I need to apply other operations to the total row, something like: baz = 2*tot_row['qux'] + 3*tot_row['bar']
Update June 2022 pd.append is now deprecated. You could use pd.concat instead but it's probably easier to use df.loc['Total'] = df.sum(numeric_only=True), as Kevin Zhu commented. Or, better still, don't modify the data frame in place and keep your data separate from your summary statistics! Append a totals row with df.append(df.sum(numeric_only=True), ignore_index=True) The conversion is necessary only if you have a column of strings or objects. It's a bit of a fragile solution so I'd recommend sticking to operations on the dataframe, though. eg. baz = 2*df['qux'].sum() + 3*df['bar'].sum()