从csv文件中获取最大值和最小值,(例)

问题描述 投票:0回答:4

我有以下包含这些行的csv文件

;name;;;surname;;age;salary;
0;john;;;snow;;38;1000;
1;nick;;;kalathes;;22;500;
0;roger;;;smith;;21;400;
1;mona;;;liza;;18;1000;
1;bill;;;alios;;48;2000;

我使用csv.reader读取csv文件

import csv,sys
filename='test1.csv'
with open(filename, mode='r', newline='', encoding='utf-8') as f:
    reader=csv.reader(f)
    try:
        for row in reader:
            print(row)

output 
[';name;;;surname;;age;salary;']
['0;john;;;snow;;38;1000;']
['1;nick;;;kalathes;;22;500;']
['0;roger;;;smith;;21;400;']
['1;mona;;;liza;;18;1000;']
['1;bill;;;alios;;48;2000;'] 

我的目标是找到以“ 1”开头的行的最大年龄。我想作为第一步,我必须找出字符串“ age”在第一行的位置。 (在此示例中,年龄是第七个元素(用;分隔))

我通过尝试类似的方法来解决这个问题>

            print(row)
            print(type(row))
            indexes = [i for i,x in enumerate(row) if x == "age"]
            print(indexes)

但到目前为止没有成功。我认为,当我能够知道其位置时,我将必须检查是否有任何以“ 1”开头的行。之后,我必须从这些行中找到最大值和最小值。我能够在java,javscript,c等中执行此操作。但是我是python的初学者。我必须实现的伪代码可能类似于:

for(i=0; i<list.length; i++{
if(list.includes("age"){
        position=stringAt(age)
        break;
}
for(i=0; i<list.length; i++{
  if(list[0]==1){
  tmp.push(list[position]
}
print(max.tmp)

我有以下csv文件,其中包含这些行; name ;;; surname ;; age; salary; 0; john ;;; snow ;; 38; 1000; 1;尼克;;;卡拉什; 22; 500; 0;罗杰;;;史密斯;; 21; 400; 1; mona ;;; liza ;; 18; 1000; 1; bill ;;; alios; ...

python list csv max min
4个回答
1
投票

指定分号作为分隔符,那很简单:


0
投票

您应该始终阅读文档(CSV File Reading and Writing)。


0
投票

我将使用DictReader以及内置函数minmax


0
投票

由于您的CSV文件用分号分隔,因此在创建csv.reader时需要指定。其余的处理相对简单:

© www.soinside.com 2019 - 2024. All rights reserved.