pandas - 如何使用 MultiIndex 在 DataFrame 的深层检索最小值索引

Posted

技术标签:

【中文标题】pandas - 如何使用 MultiIndex 在 DataFrame 的深层检索最小值索引【英文标题】:pandas - how to retrieve idices of minima at a deep level of DataFrame with MultiIndex 【发布时间】:2020-06-22 15:36:13 【问题描述】:

这是我的带有 MultiIndex 的测试数据集 -

In [126]: sumdf
Out[126]:
                     sum
frame face lmark
0     NaN  NaN       0.0
30    0.0  1.0    1113.0
           2.0    1064.0
           3.0    1212.0
45    0.0  1.0    1084.0
           2.0    1133.0
           3.0    1181.0

我可以用-检索整个DataSet的最小值的索引-

In [127]: sumdf.idxmin()
Out[127]:
sum    (0, nan, nan)
dtype: object

但是如何确定lmark 级别的最小值的索引?

即。我想检索类似 -

(45, 0.0, 1.0) - minimum where lmark = 1.0
(30, 0.0, 2.0) - minimum where lmark = 2.0
(30, 0.0, 3.0) - minimum where lmark = 3.0

【问题讨论】:

【参考方案1】:

IIUC,它是idxmingroupby

df.groupby(level='lmark')['sum'].idxmin()

输出:

lmark
1.0    (45, 0.0, 1.0)
2.0    (30, 0.0, 2.0)
3.0    (45, 0.0, 3.0)
Name: sum, dtype: object

【讨论】:

以上是关于pandas - 如何使用 MultiIndex 在 DataFrame 的深层检索最小值索引的主要内容,如果未能解决你的问题,请参考以下文章

使用 MultiIndex 时如何在 Pandas 中使用转换器

Pandas DataFrame - 如何检索 MultiIndex 级别的特定组合

如何更新 MultiIndex pandas DataFrame 的子集

使用 MultiIndex 时,如何将此 Pandas 列类型保留为日期时间?

在使用pandas MultiIndex时,如何基于索引值进行插值?

如何检查pandas MultiIndex中是不是存在列