我试图为每个试验选择最高的“ t”,但我正努力寻找一种方法来调用“ t”,因为它在索引中。我已经尝试过df_paths ['t']和类似的东西,但是我不断收到keyerror:'t'。
数据框如下所示(用户,试用版和t是多索引):
.travis.yml
理想情况是,我希望将输出作为列表[1.2,1.0,2.5,0.0],以便我可以计算出大于1的值并将其存储在变量中。
答案 0 :(得分:0)
将DataFrame.sort_index
与GroupBy.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