You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

写入DataFrame到Excel时日期格式为何自动带时间?

解决DataFrame写入Excel时日期带时间的问题

问题核心是:pandas将日期转为datetime类型后,写入Excel时会默认显示完整的datetime格式(包含00:00:00),但我们可以通过xlsxwriter引擎自定义单元格格式来只显示日期部分。

修改后的代码

import pandas as pd

player_list = [
    ['200712',50000], ['200714',51000], ['200716',51500],
    ['200719',53000], ['200721',54000],
    ['200724',55000], ['200729',57000]]
df = pd.DataFrame(player_list, columns=['Dates','Patients'])
df['Dates'] = pd.to_datetime(df['Dates'], format='%Y%m%d')

title01 = 'test.xlsx'
writer = pd.ExcelWriter(title01, engine='xlsxwriter')
df.to_excel(writer, index=False, sheet_name='sheet1')

# 获取工作表对象
workbook = writer.book
worksheet = writer.sheets['sheet1']

# 定义纯日期格式
date_format = workbook.add_format({'num_format': 'yyyy-mm-dd'})

# 设置Dates列(A列)的格式,参数为列范围、宽度、格式
worksheet.set_column('A:A', 12, date_format)

writer.save()

关键说明

  • 利用xlsxwriter的add_format()方法创建日期格式,指定num_format为'yyyy-mm-dd',这是Excel原生支持的日期格式代码
  • 通过set_column()方法将A列(对应DataFrame的Dates列)的单元格格式应用为纯日期格式,同时可设置列宽优化显示效果
  • 该方法不修改DataFrame中datetime类型的数据,仅调整Excel端的显示格式,既保留了日期类型的可操作性,又满足显示需求

其他可选方案

如果不想依赖xlsxwriter,也可以将datetime列转为字符串格式后写入Excel,但这种方式会丢失日期的原生类型特性(比如无法在Excel中直接做日期运算):

df['Dates'] = df['Dates'].dt.strftime('%Y-%m-%d')
df.to_excel('test.xlsx', index=False, sheet_name='sheet1')

优先推荐第一种方法。

内容的提问来源于stack exchange,提问作者dimzev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:38:21