Pandas: sum up multiple columns into one column without last column
It is possible to do it without knowing the number of columns and even without iloc:
print(df) Apples Bananas Grapes Kiwis0 2.0 3.0 NaN 1.01 1.0 3.0 7.0 NaN2 NaN NaN 2.0 3.0cols_to_sum = df.columns[ : df.shape[1]-1]df['Fruit Total'] = df[cols_to_sum].sum(axis=1)print(df) Apples Bananas Grapes Kiwis Fruit Total0 2.0 3.0 NaN 1.0 5.01 1.0 3.0 7.0 NaN 11.02 NaN NaN 2.0 3.0 2.0
Using df['Fruit Total']= df.iloc[:, -4:-1].sum(axis=1)
over your original df won't add the last column ('Kiwis'), you should use df.iloc[:, -4:]
instead to select all columns:
print(df) Apples Bananas Grapes Kiwis0 2.0 3.0 NaN 1.01 1.0 3.0 7.0 NaN2 NaN NaN 2.0 3.0df['Fruit Total']=df.iloc[:,-4:].sum(axis=1)print(df) Apples Bananas Grapes Kiwis Fruit Total0 2.0 3.0 NaN 1.0 6.01 1.0 3.0 7.0 NaN 11.02 NaN NaN 2.0 3.0 5.0