使用 Python 将 CSV 转换为 Excel
CSV to Excel conversion using Python
我写了一段代码来解析 .csv 并将数据保存为 excel 格式。
问题是我在 excel 中的所有数据都显示为 "number stored as text",我需要将以第 3 列开头的数据转换为数字类型,以便我可以使用图表表示它。
我的 table 看起来像这样:
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")
您的 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
文件转换第三列中的所有内容:
i[2:] = [float(x) for x in i[2:]]
到您将 i
附加到您的工作簿之前的行。
我建议使用pandas
pandas.read_csv 和 pandas.to_excel
如果您还没有定义什么列是浮点数,您可以尝试使用异常处理程序将该值转换为浮点数。
代码可以变成:
reader = csv.reader(f, delimiter=',')
for i in reader:
try:
ws.append(float(i))
except ValueError:
ws.append(i)
f.close()
我写了一段代码来解析 .csv 并将数据保存为 excel 格式。 问题是我在 excel 中的所有数据都显示为 "number stored as text",我需要将以第 3 列开头的数据转换为数字类型,以便我可以使用图表表示它。 我的 table 看起来像这样:
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")
您的 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
文件转换第三列中的所有内容:
i[2:] = [float(x) for x in i[2:]]
到您将 i
附加到您的工作簿之前的行。
我建议使用pandas pandas.read_csv 和 pandas.to_excel
如果您还没有定义什么列是浮点数,您可以尝试使用异常处理程序将该值转换为浮点数。 代码可以变成:
reader = csv.reader(f, delimiter=',')
for i in reader:
try:
ws.append(float(i))
except ValueError:
ws.append(i)
f.close()