【发布时间】: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打印一样的结果。
【问题讨论】:
-
dtype的df['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