我有熊猫数据框:
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列提供最大值,而不是我在上面寻求的结果。
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)
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |