[英]Pandas: to_excel(): How can I express Time as a format to TimeSeries index?
我有一個index
的DataFrame:
Index([00:00:00, 00:05:00, 00:10:00, 00:15:00, 00:20:00, 00:25:00, 00:30:00,
00:35:00, 00:40:00, 00:45:00,
...
23:10:00, 23:15:00, 23:20:00, 23:25:00, 23:30:00, 23:35:00, 23:40:00,
23:45:00, 23:50:00, 23:55:00],
dtype='object', length=288)
我把這個df
寫成excel如下:
writer = pd.ExcelWriter("output.xlsx")
df.set_index(index, inplace=True)
df.to_excel(writer, sheet_name="Days")
writer.save()
但是當我打開並查看Excel內容時,我看到了:
索引顯示為浮點數。
如果我將Excel單元格格式化為時間,那么我看到它是這樣的:
我不喜歡每次打開它時手動格式化表格,所以,有沒有辦法在創建Excel文件時表達格式?
如果您使用XlsxWriter作為Pandas的引擎,則可以通過以下方式設置特定列的格式:
workbook = writer.book
worksheet = writer.sheets['Days']
timeFormat = workbook.add_format({'num_format': 'h:mm:ss'})
worksheet.set_column('A:A', None, timeFormat)
您可以使用pandas.ExcelWriter()
函數的datetime_format
參數來執行此操作,但您需要首先將索引轉換為datetime
類型:
In [104]: df
Out[104]:
val
00:00:00 4
00:05:00 9
00:10:00 7
00:15:00 7
00:20:00 7
00:25:00 0
00:30:00 7
00:35:00 4
00:40:00 3
00:45:00 1
In [105]: df.index = pd.to_datetime(df.index, format='%H:%M:%S')
In [106]: df
Out[106]:
val
1900-01-01 00:00:00 4
1900-01-01 00:05:00 9
1900-01-01 00:10:00 7
1900-01-01 00:15:00 7
1900-01-01 00:20:00 7
1900-01-01 00:25:00 0
1900-01-01 00:30:00 7
1900-01-01 00:35:00 4
1900-01-01 00:40:00 3
1900-01-01 00:45:00 1
In [107]: writer = pd.ExcelWriter("d:/temp/output.xlsx", datetime_format='hh:mm:ss')
In [108]: df.to_excel(writer)
In [109]: writer.save()
如果您不想更改索引 - 您可以在寫入Excel文件時“即時”執行此操作,從而保留原始索引:
df.set_index(pd.to_datetime(df.index, format='%H:%M:%S')).to_excel(writer)
生成的Excel文件:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.