我使用的文件格式需要2-3个标题或指标行以及表格格式的数据。目前,我正在使用下面的代码来完成任务。
sevTmp和sceTmp是两个制表符分隔的文本文件,我暂时写了我的数据框。为清楚起见,这些数据框使用它们各自的to_csv()方法写入文件。
代码示例
severitiesELD.to_csv(sevTmp, sep = '\t', \
columns = severitiesELD.columns, index = False, header = severitiesCols)
scenariosELD.to_csv(sceTmp, sep = '\t', \
columns = scenariosELD.columns, index = False, header = scenariosCols)
在下面的块中,我将它们读入内存,并根据文件格式的结构插入其他几行(实际文本和间距)。 sevString / sceString表示除数据帧数据之外的两条必需行
这些行:
sevString = '#Severities\n'
sceString = '#Scenarios\n'
我喜欢避免在数据框中写出/读回来并一次性将它们与我的指示符串一起写入(第一次)。我的解决方案工作得很好,但是如果可能的话,我想加快速度。当我继续并行研究替代方案时,会喜欢最好的建议。
with open(sevTmp,'r') as sevF:
with open(sceTmp, 'r') as sceF:
with open(finalFile,'w') as finalF:
# Write the severities line
finalF.write(sevString)
# Write out the actual ELD data, and loss cause names
finalF.write(sevF.read())
# Add a space
finalF.write('\n')
# Add in the scenarios string
finalF.write(sceString)
# Add in data frame again, this time to test writing out second time
finalF.write(sceF.read())