Python,Pandas 写入数据帧,lxml.etree.SerializationError:IO_WRITE

问题描述 投票:0回答:2

从数据框中选取所需行的代码。原始数据是Excel格式的,我把它放在数据框中。

我想选取“测试日期”中属于“201506”和“201508”的所有行,并将它们写入Excel文件。线路运行良好。

import pandas as pd

data_short = {'Contract_type' : ["Other", "Other", "Type-I", "Type-I", "Type-I", "Type-II", "Type-II", "Type-III", "Type-III", "Part-time"],
'Test Date': ["20150816", "20150601", "20150204", "20150609", "20150204", "20150806", "20150201", "20150615", "20150822", "20150236" ],
'Test_time' : ["16:26", "07:39", "18:48", "22:32", "03:54", "03:30", "04:00", "22:02", "13:43", "10:29"],
}

df = pd.DataFrame(data_short)

data_201508 = df[df['Test Date'].astype(str).str.startswith('201508')]
data_201506 = df[df['Test Date'].astype(str).str.startswith('201506')]

data_68 = data_201506.append(data_201508)

writer = pd.ExcelWriter("C:\\test-output.xlsx", engine = 'openpyxl')
data_68.to_excel(writer, "Sheet1", index = False)
writer.save()

但是当我将它们应用到更大的文件(约 600,000 行 25 列(文件大小 65 MB))时,它会返回如下错误消息:

Traceback (most recent call last):
  File "C:\Python27\Working Scripts\LL move pick wanted ATA in months.py", line 15, in <module>
    writer.save()
  File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 732, in save
    return self.book.save(self.path)
  File "C:\Python27\lib\site-packages\openpyxl\workbook\workbook.py", line 263, in save
    save_workbook(self, filename)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 239, in save_workbook
    writer.save(filename, as_template=as_template)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 222, in save
    self.write_data(archive, as_template=as_template)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 80, in write_data
    self._write_worksheets(archive)
  File "C:\Python27\lib\site-packages\openpyxl\writer\excel.py", line 163, in _write_worksheets
    xml = sheet._write(self.workbook.shared_strings)
  File "C:\Python27\lib\site-packages\openpyxl\worksheet\worksheet.py", line 776, in _write
    return write_worksheet(self, shared_strings)
  File "C:\Python27\lib\site-packages\openpyxl\writer\worksheet.py", line 263, in write_worksheet
    xf.write(worksheet.page_breaks.to_tree())
  File "src/lxml/serializer.pxi", line 1016, in lxml.etree._FileWriterElement.__exit__ (src\lxml\lxml.etree.c:142025)
  File "src/lxml/serializer.pxi", line 904, in lxml.etree._IncrementalFileWriter._write_end_element (src\lxml\lxml.etree.c:140218)
  File "src/lxml/serializer.pxi", line 999, in lxml.etree._IncrementalFileWriter._handle_error (src\lxml\lxml.etree.c:141711)
  File "src/lxml/serializer.pxi", line 195, in lxml.etree._raiseSerialisationError (src\lxml\lxml.etree.c:131087)
lxml.etree.SerialisationError: IO_WRITE

这是否意味着电脑不够好(8GB,Win10)?有没有办法优化代码(例如消耗更少的内存)?谢谢你。

顺便说一句:问题类似于保存 Excel 文件时出现 I/O 错误 - Python,但没有解决方案...

python excel pandas dataframe
2个回答
0
投票

找到了解决方案:将输出写入csv(无论如何也可以在Excel中打开)

data_wanted_all.to_csv("C:\\test-output.csv", index=False)

在这里发帖以防万一有人遇到同样的问题。让我知道这个问题是否应被删除。 :)


-1
投票

Eu Costumo Guardar os arquivos como backup...No caso peguei um anterior ao dia que rodei e volou a funcionar normalmente de pois de fazer todas as checagens possíveis...Vertifiquei se a máquina estava apta a rodar , verifiquei a memória e por último Verifiquei o arquivo front do backup e o substitui.

© www.soinside.com 2019 - 2024. All rights reserved.