我正在开发一个程序,该程序从csv文件中获取一列并取平均销售数据,但是却出现错误:“ +不支持的操作数类型:'int'和'str'” >
我将csv文件中的列更改为数字,但仍然收到错误。
from csv import reader
opened_file = open('Catalog.csv')
read_file = reader(opened_file)
catalog_data = list(read_file)
sales_data = []
for stuff in catalog_data:
price = stuff[11]
manufacturer = stuff[7]
if manufacturer == 'HASBRO':
sales_data.append(price)
avg_sales = sum(sales_data) / len(sales_data)
答案 0 :(得分:2)
使用如下所示的投放方式
price = float(stuff[11])
答案 1 :(得分:1)
从CSV文件读入时,所有值都是字符串。
price = stuff[11]
这时,price
是一个字符串。所以当你走:
sales_data.append(price)`
sales_data
正在填充字符串列表。
当您最终调用sum(sales_data)
时,sum
函数失败,因为它假定sales_data
填充有数值。
要解决此问题,只需将价格数据转换为适当的值,如下所示:
price = float(stuff[11])
请注意,如果float
点值可能会失去精度,因此通常不建议使用浮点值来存储货币值。如果精度很重要,请考虑使用decimal模块。
答案 2 :(得分:0)
附加的int函数不起作用:
from csv import reader
opened_file = open('Catalog.csv')
read_file = reader(opened_file)
catalog_data = list(read_file)
sales_data = []
for sales in catalog_data:
price = int(sales[11])
manufacturer = sales[7]
if manufacturer == 'HASBRO':
sales_data.append(int(price))
avg_sales = sum(sales_data) / len(sales_data)