python - 消除 python 列表中的 n 个最高值

标签 python pandas

我有一个如下所示的列表:

List = [83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]

丢弃列表中两个最高值的最简单方法是什么?

Pandas 是一条出路吗?像这样的东西:

import pandas as pd
df = pd.DataFrame(
    List, 
    index =['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'], 
    columns =['Names']
)

还有类似的东西:

df = df.nsmallest(len(List)-2, 'Names')

我觉得非常乏味的事情是在 pandas dataframe IE 中手动定义 index,手动输入 ['1', '2', '3', '4 ', '5', '6', '7', '8', '9', '10', '11'] for 循环可以做到这一点吗?

谢谢

最佳答案

鉴于问题的简单性,我没有看到使用 Pandas 的明确理由:

my_list = [83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]
n = 2
print (sorted(my_list)[:len(my_list)-n])

输出

[34, 36, 44, 55, 66, 78, 78, 83, 89]

所使用的技术称为切片,可以根据我们的需要轻松地切割列表。

下面是一个简单的示例,可以快速了解其工作原理:

a[start:stop]  # items start through stop-1
a[start:]      # items start through the rest of the array
a[:stop]       # items from the beginning through stop-1
a[:]           # a copy of the whole array

我刚刚阅读了来自@EliasStrehle 的评论,其中有一个很好的观点,即可能需要将原始列表作为一个整体(完整副本)保留。

如果我们想保留原始列表的副本:

my_list = [83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]
new_list = sorted(my_list)
n = 2
new_list = new_list[:len(new_list)-n]
print("Original list:")
print(my_list)
print("New list:")
print (new_list)

输出

Original list:
[83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]
New list:
[34, 36, 44, 55, 66, 78, 78, 83, 89]

如果我们只想保持列表顺序:

my_list = [83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]
n = 2
for times in range(n):
    my_list.remove(max(my_list))
print(my_list)


# Another way of writing the same thing in a more cryptic / minimalistic oneliner
l = [83, 36, 44, 66, 78, 34, 78, 55, 89, 100, 97]
[l.remove(max(l)) for _ in range(2)]

输出

[83, 36, 44, 66, 78, 34, 78, 55, 89]

关于python - 消除 python 列表中的 n 个最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57995870/

相关文章:

python - pandas DataFrame 过滤器正则表达式

python - 将excel读入pandas dataframe时如何区分两行不同颜色?

python - 确定每天的员工级别

python - 使用 Networkx 在图形的 matplotlib 上高效制作动画

python - viewflow.io : What is the recommended pattern to go a step back in a flow?

python-3.x - 如何循环从 python-docx 获取的列表列表,其中每个列表都是一个表,并将这些表写入单独的工作表中

python - Pandas 每月减去累积列的函数

Python Pandas - 如何获取数据框中一个或多个过滤行的(iloc)位置

python - 在 windows 上的 virtualenv 中安装 psycopg2 (postgresql)

python - 优化代码以绘制字数统计图