繁体   English   中英

使用最大第二级切片 pandas 多索引 dataframe

[英]Slicing pandas multiindex dataframe using max of second level

假设我有这个名为df的 MultiIndex dataframe :

     |     |Value
Year |Month|  
1992 |  1  |  3
     |  2  |  5
     |  3  |  8
-----------------
1993 |  1  |  2
     |  2  |  7
----------------
1994 |  1  |  20
     |  2  |  50
     |  3  |  10
     |  4  |  5

我如何 select 所有年份和这些年份的最大月份?

我想要以下结果:

     |     |Value
Year |Month|  
1992 |  3  |  8 
-----------------
1993 |  2  |  7     
----------------
1994 |  4  |  5

我试过用

df.loc[(slice(None), [3, 2, 4]),:]

这有效,但它是硬编码的。 如何将其设置为始终带来最大月份级别,而不是手动说出来?

我的索引已排序,因此每年需要最后一个月。

我也尝试过使用.iloc但它不适用于 multiindex

>>> df.iloc[(slice(None), -1),:]

...
IndexingError: Too many indexers
...

您可以在第一级分组并采取第二级的最后一个然后df.loc[]

df.loc[pd.DataFrame.from_records(df.index).groupby(0)[1].last().items()]

             Value
Year Month       
1992 3          8
1993 2          7
1994 4          5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM