Examples of how to sum all all rows of a dataframe with pandas:
Create a dataframe
Let's first create a dataframe with pandas:
import pandas as pd
import numpy as np
data = np.random.randint(5, size=(3,3))
df = pd.DataFrame(data=data,columns=['A','B','C'])
gives for example
A B C
0 0 2 0
1 2 3 0
2 3 1 2
Sum all rows of a dataframe with pandas
To sum all rows with pandas, a solution is to use
df_sum = df.sum(axis=0)
returns
A 5
B 6
C 2
Note that df_sum is a serie here:
print(type(df_sum))
gives
<class 'pandas.core.series.Series'>
Stored sum in a new row
To save result in a new row, a solution is to change df_sum from a serie to a dataframe:
df_sum = df.sum(axis=0).to_frame()
transpose it:
df_sum = df_sum.T
print(df_sum)
gives
A B C
0 5 6 2
Note: we can also change the index name:
df_sum.index = ['Total']
returns
A B C
Total 5 6 2
Now, we can append the sum result in our source dataframe:
df = pd.concat([df_sum,df], ignore_index=False)
gives
A B C
Total 5 6 2
0 0 2 0
1 2 3 0
2 3 1 2
or if we want the total at this end row:
df = pd.concat([df,df_sum], ignore_index=False)
gives
A B C
0 0 2 0
1 2 3 0
2 3 1 2
Total 5 6 2
How to skip first or last rows
Examples of how to skip first or last rows if necessary:
import pandas as pd
import numpy as np
data = np.random.randint(5, size=(3,3))
df = pd.DataFrame(data=data,columns=['A','B','C'])
returns
A B C
0 0 4 2
1 4 1 0
2 2 0 1
Skip first row:
df.iloc[1:].sum(axis=0)
returns
A 6
B 1
C 1
Skip last row:
df.iloc[:-1].sum(axis=0)
returns
A 4
B 5
C 2
dtype: int64