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

时间:2020-03-14 10:28:37

标签: python pandas

我试图为每个试验选择最高的“ t”,但我正努力寻找一种方法来调用“ t”,因为它在索引中。我已经尝试过df_paths ['t']和类似的东西,但是我不断收到keyerror:'t'。

数据框如下所示(用户,试用版和t是多索引):

.travis.yml

理想情况是,我希望将输出作为列表[1.2,1.0,2.5,0.0],以便我可以计算出大于1的值并将其存储在变量中。

1 个答案:

答案 0 :(得分:0)

DataFrame.sort_indexGroupBy.head一起使用:

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个值,使用Index.get_level_values,最后转换为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]

带索引的数字可能由Index.value_counts计算:

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