python-3.x - 如何在没有排序的情况下获得最大的行?

标签 python-3.x pandas

我需要提取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.argpartitioniloc
没有 取决于对 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/

相关文章:

python - 提取两个不同标签之间的文本 beautiful soup

在 map 上绘制平均值的 Python 模块?

python - 如何更改 Pandas 数据框中的日期

python - 将包含可变长度列表的数据框列转换为数据框中的多列

python - 将 df 列反透视为多列和多行

python-3.x - 分类变量的归一化

python - 具有可变数量元素的附加拆包概括 (PEP 448)

python - 如何避免不一致的 s[i :-j] slicing behaviour when j is sometimes 0?

python - 在 Django 站点上,我收到套接字集群错误

python - 如何将frozendict对象转换为pandas数据框