Pandas:将日期写入Excel,使其可用作日期。

6 浏览
0 Comments

Pandas:将日期写入Excel,使其可用作日期。

我无法使我的输出XLSX以可用的方式写入日期,并且我已经按照类似的线程进行了跟进,例如:

https://xlsxwriter.readthedocs.io/example_pandas_datetime.html

Problem with Python Pandas data output to excel in date format

这是一个最小工作示例:

import pandas as pd
import xlsxwriter
not_in1 = ['missing']
# 生成数据
df = pd.DataFrame({'date1': ['5/1/2022 00:33:22', '3/1/2022 00:33:22', 'missing'], 'date2': ['3/1/2022 00:33:22', 'missing', '6/2/2022 00:33:22']})
# 格式化
df['date1'] = df['date1'].apply(lambda x: pd.to_datetime(x).strftime('%m/%d/%Y') if x not in not_in1 else x)
df['date2'] = df['date2'].apply(lambda x: pd.to_datetime(x).strftime('%m/%d/%Y') if x not in not_in1 else x)
# 写入
path = 'C:\\Users\\Andrew\\Desktop\\xd2.xlsx'
with pd.ExcelWriter(path, engine='xlsxwriter', date_format="mm dd yyyy", datetime_format="mm dd yyyy") as writer:
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    formatdict = {'num_format':'mm/dd/yyyy'}
    fmt = workbook.add_format(formatdict)
    worksheet.set_column('A:B', 20, fmt)

这里作为XLSX文件,Excel不知道该怎么处理它:

https://i.stack.imgur.com/PBrAi.png

有趣的是,如果我将XLSX表格保存为CSV文件,日期就可以正常工作。

https://i.stack.imgur.com/tROFc.png

0
0 Comments

问题原因:lambda函数将x参数转换为字符串,应该保持为datetime类型。目前在Excel中得到的是一个字符串(使用Excel的type功能可以看到.csv和.xlsx文件之间的差异)。

解决方法:只需删除.strftime('%m/%d/%Y')即可。

0