web-dev-qa-db-ja.com

Python Pandas選択した列の行ごとの最大値の列を追加

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

各行の最大値を示す新しい列を追加したいと思います。

希望する出力:

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

時々

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

動作しますが、ほとんどの場合、このエラーが発生します。

ValueError:複数の要素を持つ配列の真理値はあいまいです。a.any()またはa.all()を使用してください

なぜ時々しか機能しないのですか?別の方法がありますか?

70
user2333196
>>> 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
108
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
13
alko

maxの複数の列間のminまたはdf値を決定する場合は、次を使用します。

df['Z']=df[['A','B','C']].apply(np.max,axis=1)
1
Vikas goel