python-3.x - 如何在没有排序的情况下获得最大的行?
问题描述
我需要提取 pandas df 的 n 最小行,但保持原始行顺序对我来说非常重要。
代码示例:
import pandas as pd
df = pd.DataFrame({
'a': [1, 10, 8, 11, -1],
'b': list('abdce'),
'c': [1.0, 2.0, 1.5, 3.0, 4.0]})
df.nsmallest(3, 'a')
给出:
a b c
4 -1 e 4.0
0 1 a 1.0
2 8 d 1.5
我需要:
a b c
0 1 a 1.0
2 8 d 1.5
4 -1 e 4.0
任何想法如何做到这一点?
PS!在我的真实示例中,索引未排序/可排序,因为它们是字符串(名称)。
解决方案
假设索引在开始时排序的最简单方法
df.nsmallest(3, 'a').sort_index()
a b c
0 1 a 1.0
2 8 d 1.5
4 -1 e 4.0
或者np.argpartition
与iloc
这不依赖于对索引进行排序。强调文本
df.iloc[np.sort(df.a.values.argpartition(3)[:3])]
a b c
0 1 a 1.0
2 8 d 1.5
4 -1 e 4.0
推荐阅读
- php - 未找到处理元素 Laravel 6
- java - Java - Database Table Representation
- c - 初学者 Malloc 和内存分配
- facebook - Salesforce 与 facebook messanger 的集成
- linux - 如何为 linux 环境模块创建模块文件?
- javascript - 如何使用 momentjs 和 javascript 将 maxDate 设置为 datepicker
- reactjs - useEffect 仅在第一个道具更改后更新状态
- sql - 在日期范围内的 SQL 中查找条目不起作用
- string - Python3.6 将字符串转换为浮点数 - 错误还是功能?
- .net - appSettings 是由 .NET 框架缓存的,还是在您每次访问它们时都从文件中读取?