我需要提取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
任何想法如何做到这一点?
附注!在我的真实示例中,索引没有排序/排序,因为它们是字符串(名称)。
最佳答案
假设索引在开始时排序的最简单方法
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
此 没有 取决于对 index.emphasized 文本的排序
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
关于python-3.x - 如何在没有排序的情况下获得最大的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501142/