python - 如何将列乘以csv中的常量
问题描述
我正在尝试将列中的值乘以 1.5
import csv
ids=[2,4,1,10,6,7,15,9]
names=["Joe","Steve","Samantha","Leah","Riley","Ashley","Sheyanne"]
salaries=[95000,35000.150000,99000,53215,23424,225000]
with open("q2.csv","w+",newline='') as file:
filewriter=csv.writer(file)
content=[ids,names,salaries]
zipped=zip(*content)
fieldnames=["id","name","salary"]
filewriter.writerow(fieldnames)
filewriter.writerows(zipped)
with open("q2.csv","r")as fileread:
reader=csv.reader(fileread)
next(reader,None)
listJ=[]
for row in reader:
if len(row[1])<=3 or row[1].startswith("S"):
listJ.append(row)
for row in listJ:
row[2]=row[2]*1.5
print(listJ)
它会产生这样的结果。
[['2', 'Joe', '9500095000'], ['4', 'Steve', '35000.1535000.15'], ['1', 'Samantha', '9900099000']]
我试着用
for id,name,salary in listJ:
salary=salary*1.5
这个给我
>TypeError: can't multiply sequence by non-int of type 'float'
我什至尝试使用 numpy.asarray 使工资列表浮动,但仍然不起作用。
谢谢
解决方案
工资字段以字符串形式读入,因此您需要先将其转换为数字类型:
salary = float(salary) * 1.5
或者:
row[2] = float(row[2]) * 1.5
推荐阅读
- jenkins - 有没有办法在 extendedChoice 参数中使用管道环境变量?
- rcpp - 禁用 Rcpp 模块中的默认类构造函数
- node.js - 多个 2dsphere 索引,不确定运行哪个 geoNear
- passwords - gun.user.recall() 将密码作为纯文本存储在 sessionStorage 中,无需加密
- angular - 如何修复 Angular 测试中的“ViewDestroyedError:尝试使用已破坏的视图”错误?
- r - 如何在 R 中使用 for 循环来操作这些数据
- kendo-grid - 剑道网格中具有 int 类型的列
- python - 如何查看数据框中的列与所有其他列之间的相关性?
- python - 从数据框中的字典中提取值
- linux - 如何遍历多个文件夹和子文件夹并删除以 abc.txt 开头和 14 天前的文件名