问题描述
我的Pandas DataFrame df
看起来像这样:
My Pandas DataFrame, df
, looks like this:
parameter1 parameter2 value
1 1 0.1
2 0.2
2 1 0.6
2 0.3
value
是另一个DataFrame
上的groupby(['parameter1','parameter2']).mean()
的结果.现在,我可以使用
value
is the result of a groupby(['parameter1','parameter2']).mean()
on another DataFrame
. Now, I can find the maximum value of value
for each value of parameter1
using
df.max(level='parameter1')
但是,我需要为此最大值找到相应的parameter2
值.似乎df.idxmax()
不支持level=
,那么我该怎么做呢?
However, I need to find the corresponding value of parameter2
for this maximum value. It seems df.idxmax()
does not support level=
, so how can I do this instead?
推荐答案
我最终找到了一个窍门:
I eventually found a trick:
在级别0(参数1)上进行分组,并应用idxmax()
并获取值:
Groupby on level 0 (parameter1) and apply idxmax()
and get the values:
v = df.groupby(level=0).idxmax().values
v
array([[(1, 2)],
[(2, 1)]], dtype=object)
如果实施,这就是df.idxmax(level=0)
将给出的内容.
This is what df.idxmax(level=0)
would give if implemented.
因此,v
包含给出该级别最大值的索引.因此,您可以通过以下方式获得实际值:
So v
contains the index giving the max value for that level. So you can get the real values with:
df.loc[v.ravel()]
value
parameter1 parameter2
1 2 0.2
2 1 0.6
并最终获得与最大值对应的parameter2的值:
and finally get the value of parameter2 corresponding to max values:
df.loc[v.ravel()].index.values[1]
(2, 1)
HTH
这篇关于 pandas :每组的最大值指数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!