Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

iterate through dataframe and keep max value of columns

I have a dataframe that looks like this:

datetime hr rmssd neutral happy sad angry
2012-09-18 13:17:00 61.0 0.061420 0.884570 0.076952 0.001144 0.017392
2012-09-18 13:18:00 64.0 0.049663 0.931965 0.031468 0.000371 0.023774

What I want is to be able to create a new column that on each row assigns the name of the column which holds the biggest value: ie: in the first column there would be the emotion column stating ‘neutral’.
I tried iterating through each row like that:

for i in range(0,len(df3)):
    df3['emotion']=df3[['neutral','happy','sad','angry']].max()

but my resulting dataframe had an extra column named ’emotion’ filled with NaN values. Note that I’ve deleted all of the NaN values from my df.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I also tried using iloc:

for i in range(0,len(df3)):
    df3['emotion']=df3.iloc[3:][i].max()

but zero luck there as well. Any ideas?

>Solution :

This should work without the for-loop. Based on this answer -> duplicate?

df3['emotion'] = df3[['neutral','happy','sad','angry']].idxmax(axis=1)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading