Python Pandas为所选列的行方向最大值添加列

use*_*196 73 python max python-2.7 pandas

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

我想添加一个新列,显示每行的最大值.

期望的输出:

 name test1 test2 test3 HighScore
 bill  75    75    85    85
 joe   35    45    83    83 
 steve  51   61    45    61 
Run Code Online (Sandbox Code Playgroud)

有时

frame['HighScore'] = max(data['test1'], data['test2'], data['test3'])
Run Code Online (Sandbox Code Playgroud)

有效,但大多数时候会出现此错误:

ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

为什么它有时只能起作用?还有另一种方法吗?

Rom*_*kar 112

>>> 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
Run Code Online (Sandbox Code Playgroud)

  • @ RanjanR.Lamichhane简而言之,max(axis = 1)获取行方向的最大值,而max(axis = 0)获取列方向的最大值。看看http://pandas.pydata.org/pandas-docs/stable/genic/pandas.DataFrame.max.html (3认同)

alk*_*lko 14

>>> 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
Run Code Online (Sandbox Code Playgroud)