Pandas 数据透视表选择具有最大值的行

Zan*_*nam 5 pandas python-3.5

我有熊猫数据框:

df

Id      Name        CaseId       Value 
82      A1          case1.01     37.71 
1558    A3          case1.01     27.71 
82      A1          case1.06     29.54 
1558    A3          case1.06     29.54 
82      A1          case1.11     12.09 
1558    A3          case1.11     32.09 
82      A1          case1.16     33.35 
1558    A3          case1.16     33.35 
Run Code Online (Sandbox Code Playgroud)

对于每个 Id, Name 对,我需要选择具有最大值的 CaseId。

即我正在寻求以下输出:

Id      Name        CaseId       Value 
82      A1          case1.01     37.71
1558    A3          case1.16     33.35
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

import pandas as pd
pd.pivot_table(df, index=['Id', 'Name'], columns=['CaseId'], values=['Value'], aggfunc=[np.max])['amax']
Run Code Online (Sandbox Code Playgroud)

但它所做的只是为每个CaseId列提供最大值,而不是我在上面寻求的结果。

WeN*_*Ben 5

sort_values + drop_duplicates

df.sort_values('Value').drop_duplicates(['Id'],keep='last')
Out[93]: 
     Id Name    CaseId  Value
7  1558   A3  case1.16  33.35
0    82   A1  case1.01  37.71
Run Code Online (Sandbox Code Playgroud)

由于我们同时发布,添加更多方法

df.sort_values('Value').groupby('Id').tail(1)
Out[98]: 
     Id Name    CaseId  Value
7  1558   A3  case1.16  33.35
0    82   A1  case1.01  37.71
Run Code Online (Sandbox Code Playgroud)