如何为数据帧中的多索引中的列选择最大值?

2024-09-24 02:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为每个试验选择最高的“t”,但我很难找到一种方法来调用“t”,因为它在索引中。我尝试过dfu路径['t']和类似的东西,但我一直得到keyrerror:'t'

数据帧如下所示(用户、试用版和t为多索引):

                  x    y
user trial t            
1    1     0.0  0.1  0.2
           1.2  0.3  0.5
     2     0.0  0.1  0.2    
           1.0  0.2  0.3
2    1     2.5  0.3  0.2
     2     0.0  0.0  0.0

理想情况下,我希望输出为一个列表[1.2,1.0,2.5,0.0],这样我可以计算出有多少值高于1,并将其存储在一个变量中


Tags: 数据方法用户路径列表情况理想trial
1条回答
网友
1楼 · 发布于 2024-09-24 02:22:11

^{}^{}一起使用:

df1 = (df.sort_index(level=['trial','t'], ascending=False)
         .groupby(['user','trial'])
         .head(1)
         .sort_index())
print (df1)
                  x    y
user trial t            
1    1     1.2  0.1  0.2
     2     1.0  0.2  0.3
2    1     2.5  0.3  0.2
     2     0.0  0.0  0.0

编辑:对于索引使用^{}中的t值,最后转换为list

t = df1.index.get_level_values('t')
print (t)
Float64Index([1.2, 1.0, 2.5, 0.0], dtype='float64', name='t')

L = t.tolist()
print (L)
[1.2, 1.0, 2.5, 0.0]

使用索引可以按^{}计数:

print (t.value_counts())
0.0    1
1.2    1
2.5    1
1.0    1
Name: t, dtype: int64

相关问题 更多 >