查找csv文件中每行的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找csv文件中每行的最大值相关的知识,希望对你有一定的参考价值。

我需要从每一行中找到最大值,并以特定格式显示信息。 CSV文件是

name    tribe   id  Score1  Score2  Score3  Score4

Aang    Normad  N321B   89  67  54  78

Gyatso  Omaticaya O111C 54  78  65  78

我需要的是输出,如

                  Highest score

    Aang          Score1

    Gyatso        Score2, Score 4

到目前为止,根据我所做的代码,我只能显示两个玩家的最高分数。但是,我不确定如何将结果链接到哪个得分(例如得分1,得分2)。我也不知道如何使结果出现两次,例如Gyatso。已在网上搜索指南,但大多数都与查找最多列或建议使用我尚未开始学习的大熊猫有关。初学者到python和编码一般所以目前正在努力解决这个问题。非常感谢一些帮助,谢谢

def display_avatar_top_elements():
    with open(filePath) as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            user,tribe,id, *scores= row.values()
            if all(score.isdigit() for score in scores):
                max_score= max([int(score) for score in scores])
                print (max_score)

电流输出

89
78
答案

您可以使用列表推导来获取数组最大值的所有索引。试试这个:

def display_avatar_top_elements():
    with open(filePath) as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            user,tribe,id, *scores= row.values()
            if all(score.isdigit() for score in scores):
                int_scores = [int(score) for score in scores]
                max_score_indexes = [i for i,score in enumerate(int_scores) if score==max(int_scores)]
                print(['Score' + str(index+1) for index in max_score_indexes])
另一答案

首先从行中取出得分字典,然后获取最大键和值。

import csv
import operator
scores_list = []
with open('name.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        #Get the dictionary with all the scores
        scores = {k:v for k,v in row.items() if 'Score' in k}
        #Calculate the maximum score on value and append it to a list
        max_scores = list(max(scores.items(), key=operator.itemgetter(1)))
        scores_list.append(max_scores)
print(scores_list)

输出将是。

[
['Score1', '89'], 
['Score2', '78']
]
另一答案

尝试:

for row in reader:
    max_score = max(((sname, int(s)) for sname, s in row.items() if sname.startswith("Score")), key=lambda s: s[-1])
    print(max_score)

以上是关于查找csv文件中每行的最大值的主要内容,如果未能解决你的问题,请参考以下文章

在 csv 文件中查找行的最大值,同时排除 pyspark 中的标题

查找每行的最小值和最大值,不包括 NaN 值

用python读取一个文件夹下的所有CSV文件里某一列数据中最大值,将此最大值所在行截取到新CSV文件中?

解析带有标题字段的 CSV 文件作为每行的属性

查找每行具有最大值的列名

在 txt 文件中查找最小和最大数字