python - 如何为熊猫数据框中的多索引中的列选择最大值?
问题描述
我正在尝试为每次试验选择最高的“t”,但我正在努力寻找一种方法来调用“t”,因为它在索引中。我已经尝试过 df_paths['t'] 和类似的东西,但我不断收到 keyerror: '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 并将其存储在变量中。
解决方案
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
推荐阅读
- git - git filter-repo:可以在特定分支上使用吗?
- android - 以编程方式通过 Kotlin 获取 Android 广告 ID
- jquery - Laravel 表单提交给 500
- html - 当用户悬停我们正在显示按钮的 div 时,键盘访问不适用于带有按钮的内部 div。如何实现可访问性?
- safari-extension - 我是否应该担心 Safari 在构建和运行我的应用程序扩展后大约 30 秒后关闭?
- javascript - 使用 API 的用户输入
- php - 处理嵌套的最佳 RgEx (PHP) 是什么标签并在最外层正确插入代码?
- java - 程序卡说明中显示的换行符
- go - 如何在包中调用未导出的函数?
- html - 将垂直字体真棒图标与跨度标记内的输入提交对齐