如何编写python代码将多个csv组合到excel中,而不让数字在excel中读取为文本?
我正在使用这个csv阅读器读取我所有的csv文件,然后合并到xls工作簿中。但在打开excel后,csv中的所有数字现在都被读取为文本 在每个csv中都有字母和数字。有没有办法压缩csv中的所有数值,让excel知道它是数字而不是文本如何编写python代码将多个csv组合到excel中,而不让数字在excel中读取为文本?,python,excel,csv,Python,Excel,Csv,我正在使用这个csv阅读器读取我所有的csv文件,然后合并到xls工作簿中。但在打开excel后,csv中的所有数字现在都被读取为文本 在每个csv中都有字母和数字。有没有办法压缩csv中的所有数值,让excel知道它是数字而不是文本 import glob, csv, xlwt, os wb = xlwt.Workbook() for filename in glob.glob("d:/test/*.csv"): (f_path, f_name) = os.path.split(f
import glob, csv, xlwt, os
wb = xlwt.Workbook()
for filename in glob.glob("d:/test/*.csv"):
(f_path, f_name) = os.path.split(filename)
(f_short_name, f_extension) = os.path.splitext(f_name)
ws = wb.add_sheet(f_short_name)
spamReader = csv.reader(open(filename, "rt"))
for rowx, row in enumerate(spamReader):
for colx, value in enumerate(row):
ws.write(rowx, colx, value)
wb.save("d:/test/compiled.xls")
最简单的方法:
for rowx, row in enumerate(spamReader):
for colx, value in enumerate(row):
try:
value = float(value)
except ValueError:
pass
ws.write(rowx, colx, value)
我将使用这个库,它还将连接整个Python数据科学堆栈。Pandas将足够聪明,能够正确解释Excel的数据类型
import glob, os
import pandas as pd
from pandas import DataFrame, ExcelWriter
writer = ExcelWriter("d:/test/compiled.xlsx")
for filename in glob.glob("d:/test/*.csv"):
df_csv = pd.read_csv(filename)
(_, f_name) = os.path.split(filename)
(f_shortname, _) = os.path.splitext(f_name)
df_csv.to_excel(writer, f_shortname, index=False)
writer.save()
您可以打开一个电子表格进行编写,将每个CSV作为一个文本读取,然后将
数据框
写入单独选项卡上的工作表中。存在index=False
部分,因此Python不会将默认的DataFrame
索引写入工作表,这会给您一个额外的不需要的列。这实际上并没有解决问题,因为追加会将所有csv合并到一个工作表中,而不是分配给多个工作表。谢谢。好的,它是固定的。不幸的是,如果您的CSV非常大,这将遇到内存问题