在python中查找csv文件的一部分的长度



我试图获得csv文件中一列部分的平均值,但一直找不到长度。我注意到,当我运行len时,它计算的是字符数量,而不是2021-2003的长度(len应该是18(。

*注意:这是一个类,不会使用pandas

import csv
with open('C:/Users/lblortz/Desktop/LakeMead.csv', newline='') as csv_file:
list_name = csv.reader(csv_file, delimiter=',')
index=0
total=0.0
count=0.0
for YEAR, AVGELEVATION, AVGCONTENT, AVGINFLOW, AVGOUTFLOW, AVGHIGHTEMP, AVGLOWTEMP, AVGWATERTEMP in list_name:
if index != 0:
if int(YEAR)>=2003:
print(len(list_name))
total= float(AVGELEVATION) + total     
index+=1

count=total/len(list_name)
print("average is",count)

欢迎使用SO。您的代码非常好。

要想找到多年来的平均总数,是的,这里有一个问题:

count=total/len(YEAR)

看起来你把CCD_ 1等同于";YEAR列中的所有单元格(行(";,但你已经发现,它实际上意味着";存储在变量CCD_ 2〃中的值中的字符长度;,你在循环中设置了这个值,所以它是你循环中最后一年的字符长度。

对此的快速解决方案是跟踪统计了多少年:

index=0
total=0.0
count=0.0
years=[]  # create an empty list and add years to it as they are counted
...
if int(YEAR) >= 2003:
years.append(YEAR)
...
count=total/len(years)

对于处理CSV的一般情况,我也建议进行这个小的更改。。。

您的索引计数器

看起来index的存在只是为了说明您是否迭代过了标头。您可以手动读取第一行(标题(,而不使用它(丢弃它(,如下所示:

list_name=csv.reader(csv_file)
next(list_name)
...

next()是Python手动迭代可迭代的方法,csv.reader()就是这样做的。

最新更新