【问题标题】:Cannot write to Excel worksheet with valid date format with Pandas无法使用 Pandas 写入具有有效日期格式的 Excel 工作表
【发布时间】:2020-02-26 06:38:59
【问题描述】:

背景:

1、使用 Python 执行 SQL 并使用 Pandas 将输出保存为 DataFrame 格式。

2,将输出作为一个新工作表附加到我现有的 excel 文件中。

下面是我的代码:

from pandas import ExcelWriter

sql_20 = ''''''

db = cx_Oracle.connect('*****', '*******', '**********')
conn = db.cursor()

conn.execute(sql_20)
df = pandas.read_sql_query(sql_20,db)
print(df)

with ExcelWriter('GUCS6J-Job Data.xlsx', mode='a') as writer:
    df.to_excel(writer, sheet_name=str(20))
writer.save()

数据库:甲骨文

A列数据类型:日期

Oracle 的 SQL 结果:

来自 Python 的 DataFrame 打印:

到目前为止一切顺利


但是我在 excel 工作表中得到了什么:

我很好奇为什么我得到了 '#################' 并且这个单元格的值在 excel 中是 -693594

希望能得到和excel文件中DataFrame打印一样的结果。

【问题讨论】:

  • dtypedf['A'] 是什么?
  • 嗨@Datanovice,它是。我用 print(type(df['A']))
  • pd.to_datetime('01-Jan-01') 返回2001-01-01 将您的日期转换为有效的熊猫日期时间df['date'] = pd.to_datetime(df['date']) 在我的机器上测试,我可以在excel中查看。
  • 我只是好奇你为什么需要from pandas import ExcelWriter?您之前已经导入了 pandas(因为您之前正在创建数据框)并且您应该能够使用 df.to_excel 而无需任何额外的导入。
  • 嗨@Datanovice,在我们的 oracle 数据库中,'01-Jan-01' 是 0001-01-01。 Pandas 正确读取输出,因为数据框显示“0001-01-01 00:00:00”。我将在输出中有数百列,我不想手动转换每一列。

标签: python excel pandas dataframe


【解决方案1】:

请参考这两个链接,看看它是否解决了您的问题 https://xlsxwriter.readthedocs.io/example_pandas_datetime.html Python pandas dataframe "Date" Index different format in xlsx and csv

我认为您需要在 ExcelWriter() 中添加 date_format

【讨论】:

  • 欢迎来到 StackOverlfow!请编辑您的答案以包含链接页面提示的示例,因为它们适用于 OP 的代码。也许重写他们的代码,添加您建议的更改?这将使您的答案对以后可能遇到此问题的其他人更有用。
猜你喜欢
  • 1970-01-01
  • 2021-09-09
  • 2018-04-03
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 2018-12-26
  • 2021-04-16
相关资源
最近更新 更多