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

导出Pandas DataFrame至Excel时日期格式不符的技术问询

解决Pandas导出Excel时日期带时间的问题

问题分析

你的代码存在两个关键问题:

  1. groupby('Date')后,Date成为了DataFrame的索引而非普通列,后续CasesperDay_df['Date'] = ...是新增了一列,并没有修改导出时使用的索引日期。
  2. 日期转换代码写在了to_excel之后,根本不会作用到已导出的文件中。

解决方案

方法1:转换索引为日期格式后导出

先将索引的datetime类型转换为仅日期格式,再执行导出:

import pandas as pd

# 读取数据
df = pd.read_excel(r'C:\Users\Python\data.xlsx')

# 分组聚合
CasesperDay_df = df.groupby('Date').agg({'cases':'sum'})

# 将索引的datetime转换为仅日期(去除时间部分)
CasesperDay_df.index = pd.to_datetime(CasesperDay_df.index).date

# 导出到Excel
CasesperDay_df.to_excel(r"C:\Users\Python\output.xlsx", sheet_name = 'Cases per Day')

方法2:使用ExcelWriter指定单元格日期格式

这种方法可以直接在导出时设置Excel单元格的日期显示格式,无需修改DataFrame的数据类型:

import pandas as pd

# 读取数据
df = pd.read_excel(r'C:\Users\Python\data.xlsx')

# 分组聚合
CasesperDay_df = df.groupby('Date').agg({'cases':'sum'})

# 使用ExcelWriter设置日期格式
with pd.ExcelWriter(r"C:\Users\Python\output.xlsx", engine='xlsxwriter') as writer:
    CasesperDay_df.to_excel(writer, sheet_name='Cases per Day')
    # 获取工作表对象
    worksheet = writer.sheets['Cases per Day']
    # 设置第一列(索引列)的日期格式为YYYY-MM-DD
    date_format = writer.book.add_format({'num_format': 'yyyy-mm-dd'})
    worksheet.set_column('A:A', None, date_format)

方法3:将索引转为列后处理

如果更习惯操作列而非索引,可以先把索引转为列,处理后再导出:

import pandas as pd

# 读取数据
df = pd.read_excel(r'C:\Users\Python\data.xlsx')

# 分组聚合并重置索引(将Date转为列)
CasesperDay_df = df.groupby('Date').agg({'cases':'sum'}).reset_index()

# 转换日期格式
CasesperDay_df['Date'] = pd.to_datetime(CasesperDay_df['Date']).dt.date

# 导出到Excel
CasesperDay_df.to_excel(r"C:\Users\Python\output.xlsx", sheet_name = 'Cases per Day', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:05