[英]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.