我正在使用Python 3.6.2并且有一个如下所示的csv文件:
STATE,RATE,DEATHS
IA,4.2,166
NH,4.2,52
MA,4.3,309
CA,4.4,"2,169"
CO,4.6,309
ID,4.6,106
NY,4.6,"1,087"
VT,4.6,27
NJ,4.7,487
WA,4.9,432
我正在尝试计算“RATE”列的总和。但是,使用我当前的代码,我不断收到错误:“TypeError:'float'对象不可迭代”。我是Python的新手,我不确定我做错了什么。
import csv
with open('infant_mortality.csv', 'r') as f:
next(f) #skips the first row
for row in csv.reader(f):
total = sum(float(row[1]))
print('The total is {}'.format(total))
感谢您的帮助!
答案 0 :(得分:2)
怎么样:
import pandas as pd
df = pd.read_csv('infant_mortality.csv')
print('The total is {}'.format(df['RATE'].sum()))
答案 1 :(得分:0)
您使用的sum()
需要像列表一样的迭代,只需在total中添加一个起始值,然后将所有值加总为total += value
import csv
with open('infant_mortality.csv', 'r') as f:
next(f) #skips the first row
total = 0
for row in csv.reader(f):
total += float(row[1])
print('The total is {}'.format(total))
答案 2 :(得分:0)
sum()期望一个可迭代对象,但是当你写 sum(float(row [1])) 时,row [1]是一个单独的值,而不是像列表一样迭代(在你的情况下是'row'列表)
来自python docs
sum(iterable [,start])
总结开始和可迭代的项目 从左到右并返回总数。开始默认为0 iterable的项目通常是数字,而起始值则不是 允许是一个字符串。
使用sum()
的示例list_number = [2,3,5]
print sum(list_number)
10
也许下面的代码可以帮助你。
import csv
total = 0
with open('infant_mortality.csv', 'r') as f:
next(f) #skips the first row
for row in csv.reader(f):
total += float(row[1])
print('The total is {}'.format(total))