【发布时间】:2019-02-09 12:29:54
【问题描述】:
早上好, 我已经使用 python 大约一年半了,我发现自己面临一个我无法解决的基本问题。
我有一个简单的数据框 (df),不大(大约 12k 行和 10 列),其中包括一列是“datetime64[ns]”格式,一列是“float64”,所有其他都是“对象”。 我调试了,可以说是日期时间列的错误。
当我将此 df 保存到 Excel 时,我收到以下消息:
文件“test.py”,第 16 行,在 test.to_excel(writer,'test') 文件 "C:\Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\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", 第 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 中 self._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.number_format = fmts[类型(值)] 关键错误:
我使用的代码如下:
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()
请看下面的数据样本:
> 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
肯定有什么明显的... 谢谢您的帮助。 BR, 雷诺
【问题讨论】:
-
由于某种原因看不到最后一条错误:> KeyError:
。此外,我在上面尝试呈现的数据是 2 列 df,其中一列只有 A,被称为“A”,另一列有日期,被称为“CaseDate” -
刚刚测试过,无法重现...但我只是
test.to_excel('test_out.xlsx', 'test') -
谢谢拉斐尔 - 我仍然有同样的错误。 KeyError:
-
@RafaelC:您能告诉我您在“CaseDate”列中的任何元素的类别吗?
我使用了print(type(test["CaseDate"][0]).__name__)。
我得到以下信息:“时间戳”。
标签: python excel python-3.x pandas dataframe