我编写了一段代码来解析.csv并以excel格式保存数据。 问题是excel中的所有数据都显示为"数字存储为文本"我需要将从第3列开始的数据转换为数字类型,以便我可以使用图表来表示它。 我的表看起来像这样:
C1 C2 C3
R1 BlaBla 36552.00233102 ...
R2 App1 3484.000000000 ...
R3 App2 3399.000000000 ...
.....................................
这是代码:
f = open("csv_file")
wb = openpyxl.Workbook()
ws = wb.active
reader = csv.reader(f, delimiter=',')
for i in reader:
ws.append(i)
f.close()
wb.save("excel_file")
答案 0 :(得分:2)
您的CSV文件是否包含引号中的数字元素?如果是这样,那将导致你所看到的。例如,考虑一下:
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for i in [['100', 100]]:
ws.append(i)
wb.save("excel_file.xlsx")
str
值在Excel中写为文本元素,而int
值写为数字。如果您的CSV文件包含
"100", 100
csv
会将其解释为字符串和数字。
您可以通过添加:
从csv
文件转换第3列中的所有内容
i[2:] = [float(x) for x in i[2:]]
到您将i
附加到工作簿之前的行。
答案 1 :(得分:1)
如果尚未定义哪个列是浮点数,则可以尝试使用异常处理程序将值转换为float。 代码可能变成:
class
答案 2 :(得分:-3)
我建议使用熊猫 pandas.read_csv和pandas.to_excel