Python 将标题格式更改为excel

Python 将标题格式更改为excel,python,pandas,date,header,Python,Pandas,Date,Header,是否有机会更改写入excel文件的my pandas数据框的标题格式。 也许这是不寻常的,但我的标题是由日期和时间组成的,我希望excel文件的“单元格格式”是“日期格式” 我试过这样的方法: import pandas as pd data = pd.DataFrame({'1899-12-30 00:00:00': [1.5,2.5,3.5,4.5,5.4]}) writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') data

是否有机会更改写入excel文件的my pandas数据框的标题格式。 也许这是不寻常的,但我的标题是由日期和时间组成的,我希望excel文件的“单元格格式”是“日期格式”

我试过这样的方法:

import pandas as pd

data = pd.DataFrame({'1899-12-30 00:00:00': [1.5,2.5,3.5,4.5,5.4]})

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

data.to_excel(writer, sheet_name='Sheet1',index=True)
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

date_fmt = workbook.add_format({'num_format': 'dd.mm.yyyy  hh:mm:ss'})
worksheet.set_row(0, 20, date_fmt)

writer.save()

但set_行似乎不会更改标题格式。我还将日期转换为excel序列日期值,但这也没有帮助。

要使其正常工作,您需要做一些事情

第一个是避免使用默认标题,因为这将设置一个不能用
set\u row()
覆盖的单元格标题。最好的做法是跳过默认标题,编写自己的标题(请参阅XlsxWriter文档的一节)

其次,Excel中的日期是格式化的数字,因此您需要将字符串标题转换为数字,或者更好地转换为datetime对象(请参阅文档部分)

最后,“1899-12-30”在Excel中不是有效日期

以下是一些修复程序的工作示例:

将熊猫作为pd导入
从日期时间导入日期时间
data=pd.DataFrame({'2020-09-1812:30:00':[1.5,2.5,3.5,4.5,5.4]})
writer=pd.ExcelWriter('test.xlsx',engine='xlsxwriter')
#关闭默认标题并跳过一行以允许我们插入用户
#定义的标题。
数据到excel(编写器,
图纸名称=图纸1',索引=真,
startrow=1,header=False)
#获取xlsxwriter工作簿和工作表对象。
工作簿=writer.book
工作表=书写器.工作表['Sheet1']
#添加标题格式。
date_fmt=工作簿。添加_格式({'num_格式':'dd.mm.yyyy hh:mm:ss'})
#将列标题转换为datetime对象,并使用
#定义的格式。
对于col_num,枚举中的值(data.columns.values):
#将日期字符串转换为datetime对象。
date\u time=datetime.strtime(值,“%Y-%m-%d%H:%m:%S”)
#为清晰起见,请将列加宽。
工作表.设置列(列数+1,列数+1,20)
#写下日期。
工作表。写入(0,列数+1,日期时间,日期fmt)
writer.save()
输出


非常感谢!似乎是最好的解决方案,摆脱原来的标题。