如何获取多个索引的最大/最小值

时间:2016-11-22 16:43:10

标签: python max

我有一个包含多行的大型数据集,并希望从所有行返回index[2]的最大值。所以在下面的例子中我想要返回20。以下只是在索引处打印值而不是最大值。

1,"Goroka",10,"Pacific"
2,"Madang",20,"Pacific"
3,"Mount Hagen",5,"Pacific"

for line in data.readlines():
    splitLine = line.split(",") # Split line on ,
    ID = splitLine[0]
    name = splitLine[1]
    no = splitLine[2]
    ocean = splitLine[4]

print max(no)

5 个答案:

答案 0 :(得分:1)

随时建立最大值:

maxno = 0
for line in data.readlines():
    splitLine = line.split(",") # Split line on ,
    ID = splitLine[0]
    name = splitLine[1]
    no = splitLine[2]
    ocean = splitLine[4]
    if no > maxno:
        maxno = no

 print maxno

答案 1 :(得分:1)

如果您的数据看起来与内存中的字符串相符:

>>> print txt
1,"Goroka",10,"Pacific"
2,"Madang",20,"Pacific"
3,"Mount Hagen",5,"Pacific"

您可以使用maxmin和lambda键函数来查找第三个csv字段的最大值或最小值的行:

>>> max(txt.splitlines(), key=lambda line:int(line.split(',')[2]))
'2,"Madang",20,"Pacific"'

或者,一分钟:

>>> min(txt.splitlines(), key=lambda line:int(line.split(',')[2]))
'3,"Mount Hagen",5,"Pacific"'

如果您只是在寻找第三个值,则解析该行。

使用完全相同的方法,您可以对这样的数据进行排序,以获得最大n值或最小值:

>>> print '\n'.join(sorted(txt.splitlines(), key=lambda line:int(line.split(',')[2])))
3,"Mount Hagen",5,"Pacific"
1,"Goroka",10,"Pacific"
2,"Madang",20,"Pacific"

如果数据在文件中,请使用相同方法逐行解析的一般习惯用法:

with open(your_file) as f:
    max(f, key=lambda line:int(line.split(',')[2]))

通常,最好在文件中使用csv module来表示此类数据。最好避免使用file.readlines()来获取文件的内容,而不是使用for循环遍历文件。

答案 2 :(得分:1)

假设您的数据保存在.txt文件中,并且由于您使用的是Python,您可以尝试使用pandas。

如果您的示例数据在工作目录中保存为“ data.txt ”,请尝试:

import pandas as pd

data = pd.read_table('data.txt', sep=',', header=None)
data.columns = ['col_' + str(no) for no in range(0, len(data.columns))]  # add column names (though not necessarily)
max_value = max(data['col_2'])

我认为max_value就是你想要的。

答案 3 :(得分:0)

使用max(data,key=func)键功能查找复杂数据集的最大值。假设您有列表中的数据。

test = [[1,"Goroka",10,"Pacific"],[2,"Madang",20,"Pacific"],[3,"Mount Hagen",5,"Pacific"]]
data = max (test,key=lambda x: x[2]) ## or use min
print data[2]

答案 4 :(得分:-2)

我打算建议您将数据保存在数组中。例如:

data = [[1,"Goroka",10,"Pacific"],[2,"Madang",20,"Pacific"],[3,"Mount Hagen,5,"Pacific"]]

然后你就可以得到你想要的东西:

for item in data:
    maxno = item[2]

然后你可以随心所欲地做任何事情