使用python创建的excel文件打开的速度非常慢,即使文件大小约为50 mb。
我已经尝试过熊猫和openpyxl。
def to_file(列表报告,列表表,条列,名称):
我= 0
wb = ExcelWriter(path_output +'\\'+名称+日期格式+'.xlsx')
当我<= len(list_report)-1时:
尝试:
df = pd.DataFrame(pd.read_csv(path_input +'\\'+ list_report [i] + reportdate +'.csv'))
对于strip_column中的列:
尝试:
df [column] = df [column] .str.strip('=(“”)')
除了:
通过
df = Adjust_report(df,list_report [i])
df = df.apply(pd.to_numeric,错误=“忽略”,向下转换=“整数”)
df.to_excel(wb,sheet_name = list_sheet [i],index = False)
除了:
打印(“缺少报告:'+ list_report [i])
我+ = 1
wb.save()
是否有加速的方法?
答案 0 :(得分:0)
让我们将list_report
重命名为reports
。
然后,您的while
循环通常表示为:for i in range(len(reports)):
您多次访问第i
个元素。循环可以用for i, report in enumerate(reports):
为您绑定。
但是事实证明,您甚至不需要i
。因此大多数人会这样写:for report in reports:
这段代码非常好:
for column in strip_column:
try:
df[column] = df[column].str.strip('=("")')
except:
pass
我建议您使用def strip_punctuation
将其掩埋在辅助函数中。
(我认为列表应该是复数形式?strip_columns
?)
然后,您将有一个简单的df
分配序列。
配置文件已过time()
。用以下代码将每个df
分配括起来:
t0 = time()
df = ...
print(time() - t0)
这将向您显示处理流水线中哪个部分花费的时间最长,因此应该花费最大的精力来加快处理速度。
我怀疑adjust_report()
用了大部分时间,
但看不到它很难说。