Python 熊猫:每组的最大值索引
我的熊猫数据帧,Python 熊猫:每组的最大值索引,python,pandas,dataframe,Python,Pandas,Dataframe,我的熊猫数据帧,df,如下所示: parameter1 parameter2 value 1 1 0.1 2 0.2 2 1 0.6 2 0.3 value是另一个DataFrame上的groupby(['parameter1','parameter2'])的结果。现在,我可以使用 df.max(le
df
,如下所示:
parameter1 parameter2 value
1 1 0.1
2 0.2
2 1 0.6
2 0.3
value
是另一个DataFrame
上的groupby(['parameter1','parameter2'])的结果。现在,我可以使用
df.max(level='parameter1')
但是,我需要找到此最大值的参数2
的对应值。似乎df.idxmax()
不支持level=
,那么我该怎么做呢?我最终找到了一个窍门:
按级别0(参数1)分组并应用idxmax()
并获取值:
v = df.groupby(level=0).idxmax().values
v
array([[(1, 2)],
[(2, 1)]], dtype=object)
这是df.idxmax(level=0)
如果实现的话将给出的结果
因此v
包含给出该级别最大值的索引。因此,您可以通过以下方式获得实际值:
df.loc[v.ravel()]
value
parameter1 parameter2
1 2 0.2
2 1 0.6
最后得到最大值对应的参数2的值:
df.loc[v.ravel()].index.values[1]
(2, 1)
嗯一个好办法是
df.unstack().idxmax(axis=1)
取消对数据帧的堆栈将生成一个数据帧,其中参数_1
作为列索引