无法使用 xlsxwriter 实现 df.to_excel 的自定义日期格式

Unable to achieve custom dateformat for df.to_excel using xlsxwriter

我无法使用 xlsxwriter 实现日期格式。 我已经尝试使用 xlsxwriter 将日期格式设置为 excel in pandas 的示例代码,但通过添加 Sqldf 步骤来过滤掉 df 略有不同。这里我只使用了sqldf步骤中的简单过滤器来测试目的,但在实际场景中很复杂。

任何人都可以建议我,这是怎么回事。我已经检查了 dtypes ,它在工作(实际示例)和非工作(添加了 sqldf 步骤)情况下都是对象。

import pandas as pd
from datetime import datetime, date
from pandasql import sqldf

# Create a Pandas dataframe from some datetime data.
df = pd.DataFrame({'Date and time': [datetime(2015, 1, 1, 11, 30, 55),
                                     datetime(2015, 1, 2, 1,  20, 33),
                                     datetime(2015, 1, 3, 11, 10    ),
                                     datetime(2015, 1, 4, 16, 45, 35),
                                     datetime(2015, 1, 5, 12, 10, 15)],
                   'Dates only':    [date(2015, 2, 1),
                                     date(2015, 2, 2),
                                     date(2015, 2, 3),
                                     date(2015, 2, 4),
                                     date(2015, 2, 5)],
                   })

# Create a Pandas Excel writer using XlsxWriter as the engine.
# Also set the default datetime and date formats.
s_df =  sqldf('select * from df',locals())
writer = pd.ExcelWriter("pandas_datetime.xlsx",
                        engine='xlsxwriter',
                        datetime_format='mmm d yyyy hh:mm:ss',
                        date_format='mmmm dd yyyy')

# Convert the dataframe to an XlsxWriter Excel object.
s_df.to_excel(writer, sheet_name='Sheet1')

# Get the xlsxwriter workbook and worksheet objects in order to set the column
# widths, to make the dates clearer.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

worksheet.set_column('B:C', 20)

# Close the Pandas Excel writer and output the Excel file.
writer.save()

输出:

sqldf() 函数似乎已将日期时间对象转换为一般对象,然后在使用 to_excel() 编写时将其字符串化。您可以从屏幕截图中看到这一点,其中“日期和时间”和“仅限日期”值与单元格的左侧对齐(表示它们是字符串)而不是与单元格的右侧对齐 numbers/dates.