KeyError:将classframe保存到excel时的<class'pandas._libs.tslibs.timestamps.Timestamp'>

rva*_*aux 6 python excel dataframe python-3.x pandas

早安,我一直在使用python大约一年半,我发现自己面临着一个我无法解决的基本问题.

我有一个简单的数据帧(df),不大(大约12k行和10列),包括一个"datetime64 [ns]"格式的列,一个"float64",所有其他列都是"对象".我调试了,可以说错误来自datetime列.

当我将此df保存到Excel时,我收到以下消息:

在test.to_excel(writer,'test')文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas \"中的文件"test.py",第16行core\frame.py",第1766行,在to_excel引擎=引擎中)文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\io\formats\excel .py",第652行,写入freeze_panes = freeze_panes)文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\io\excel.py",line 1395,在write_cells xcell.value中,fmt = self._value_with_fmt(cell.val)文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell .py",第291行,值为self._bind_value(value)文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell.py" ,第193行,在_bind_value中自我._set_time_format(value)文件"C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell.py",第277行,在_set_time_format self.nu中 mber_format = fmts [type(value)] KeyError:

我正在使用的代码如下:

import pandas as pd
import datetime
from pandas import ExcelWriter

test = pd.read_excel("test_in.xlsx")
test["CaseDate"] = pd.to_datetime(test["CaseDate"])
writer = ExcelWriter("test_out.xlsx")
test.to_excel(writer,'test')
writer.save()
Run Code Online (Sandbox Code Playgroud)

请参阅下面的数据样本:

>    A   CaseDate 
> 0  A 2018-08-30 
> 1  A 2018-08-30 
> 2  A 2018-08-30 
> 3  A 2018-08-30 
> 4  A 2018-08-30 
> 5  A 2018-08-30 
> 6  A 2018-08-30 
> 7  A 2018-08-30 
> 8  A 2018-08-30 
> 9  A 2018-08-30
Run Code Online (Sandbox Code Playgroud)

必须有明显的东西......谢谢你的帮助.BR,Renaud

Arn*_*uza 7

我的项目遇到了同样的问题.我无法理解为什么会发生这种错误,但我找到了解决方案.

我相信这个错误与模块有关openpyxl.它被Pandas用作将数据导出为ex​​cel文件的引擎.当你与一个命名文件.xlsx扩展名,自动类ExcelWritter使用openpyxl的默认引擎.

我所做的就是改变这个引擎.您可以传递参数以ExcelWritter调用新引擎(xlsxwriter)以导出数据帧.

所以我的代码改为:

writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer, 'data')
writer.save()
Run Code Online (Sandbox Code Playgroud)

到这一个:

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='data')
writer.save()
Run Code Online (Sandbox Code Playgroud)

如果您xlsxwriter的环境中没有安装该模块,只需使用pip install xlsxwriter并在此之后执行您的代码.

那也应该解决你的问题.