Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Pandas add column for row-wise max value of selected columns [duplicate]

data = {'name' : ['bill', 'joe', 'steve'],
    'test1' : [85, 75, 85],
    'test2' : [35, 45, 83],
     'test3' : [51, 61, 45]}
frame = pd.DataFrame(data)

I would like to add a new column that shows the max value for each row.

desired output:

 name test1 test2 test3 HighScore
 bill  75    75    85    85
 joe   35    45    83    83 
 steve  51   61    45    61 

Sometimes

frame['HighScore'] = max(data['test1'], data['test2'], data['test3'])

works but most of the time gives this error:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Why does it only work sometimes? Is there another way of doing it?

like image 622
user2333196 Avatar asked Nov 17 '13 16:11

user2333196


3 Answers

>>> frame['HighScore'] = frame[['test1','test2','test3']].max(axis=1)
>>> frame
    name  test1  test2  test3  HighScore
0   bill     85     35     51         85
1    joe     75     45     61         75
2  steve     85     83     45         85
like image 101
Roman Pekar Avatar answered Oct 24 '22 07:10

Roman Pekar


>>> frame['HighScore'] = frame[['test1','test2','test3']].apply(max, axis=1)
>>> frame
    name  test1  test2  test3  HighScore
0   bill     85     35     51        85
1    joe     75     45     61        75
2  steve     85     83     45        85
like image 38
alko Avatar answered Oct 24 '22 09:10

alko


if a max or min value between multiple columns in a df is to be determined then use:

df['Z']=df[['A','B','C']].apply(np.max,axis=1)
like image 3
Vikas goel Avatar answered Oct 24 '22 08:10

Vikas goel