valid
valid

Reputation: 63

sum up row-values over multiple columns into new column in pandas df

I've got a dataframe (questDay1Df) where I want to sum up the values per row of 21 columns into a new column (BDI_SUM)

I know how to do it by calling and adding each column-value:

questDay1Df['BDI_SUM'] = questDay1Df['BD01']+questDay1Df['BD02']+questDay1Df['BD03']+questDay1Df['BD04']+questDay1Df['BD05']+questDay1Df['BD06']+questDay1Df['BD07']+questDay1Df['BD08']+questDay1Df['BD09']+questDay1Df['BD10']+questDay1Df['BD11']+questDay1Df['BD12']+questDay1Df['BD13']+questDay1Df['BD14']+questDay1Df['BD15']+questDay1Df['BD16']+questDay1Df['BD17']+questDay1Df['BD18']+questDay1Df['BD19']+questDay1Df['BD20']+questDay1Df['BD21']

Is there a quicker way in which I wouldn't have to write down each column name? BD01-BD21 are all next to each other in the data frame. My idea was to call the column number of BD01 because I am not too sure of it's number and then just write a code to sum up the row-values for this column and the next 20 columns but I wasn't able to implement that now.

TIA for any ideas :)

Upvotes: 1

Views: 1047

Answers (1)

wasif
wasif

Reputation: 15478

Yeah, use df.sum along axis 1 (column wise):

questDay1Df['BDI_SUM'] = questDay1Df.sum(axis=1)

If you need to filter columns:

questDay1Df['BDI_SUM'] = questDay1Df.filter(regex='BD\d+$').sum(axis=1)

You can use like too in filter: .filter(like='BD')

Upvotes: 2

Related Questions