Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值

问题描述 投票:0回答:2

我有一个带有年份和月份多重索引的数据框,如下所示

     |     |Value
Year |Month|  
     |  1  |  3
1992 |  2  |  5
     |  3  |  8
     | ... | ...
1993 |  1  |  2
     | ... | ...

我正在尝试选择每年的最大值并将其放入 DF 中,如下所示:

     | Max
Year |  
1992 |  5
1993 |  2
     | ... 

关于多索引的信息不多,我应该简单地进行 group by 和 apply 或类似的操作以使其更简单吗?

python python-3.x pandas dataframe data-science
2个回答
12
投票

完全正确:

df.groupby(level=0).apply(max)

在我的样本中

DataFrame

 0
上限较低            
一一0 0.246490
           1 -1.265711
           2 -0.477415
           3 -0.355812
           4 -0.724521
     b 0 -0.409198
           1 -0.062552
           2 -0.731789
           3 1.131616
           4 0.085248
B一0 0.193948
           1 2.010710
           2 0.289300
           3 0.305373
           4 1.376965
     b 0 0.210522
           1 1.431279
           2 -0.247171
           3 0.899074
           4 0.639926

结果:

 0
帽子          
1.131616
乙2.010710

这就是我创建

DataFrame
的方式,顺便说一句:

df = pd.DataFrame(np.random.randn(5,4), columns = l)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['Caps','Lower'])
df = pd.DataFrame(df.unstack())

7
投票

使用

GroupBy.max

#bernie's sample data
out = df.groupby(level=0).max()
print (out)
             0
Caps          
A     1.131616
B     2.010710
© www.soinside.com 2019 - 2024. All rights reserved.