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

如何避免Pandas导出Excel时日期附加时间并保留原格式

解决Pandas导出Excel时表头日期格式错乱问题

问题场景

我有一个Excel文件,表头包含文本和19.07.2023这类日-月-年格式的日期:

Item/Date   19.07.2023  20.07.2023  21.07.2023
Some Item      58               51             57

将其导入Pandas执行合并、填充空值操作后导出到Excel,原日期会变成2023-07-19 0:00:00,既附加了不必要的时间部分,又改变了原有的日-月-年格式。希望在Pandas处理流程中直接解决该问题,无需后续手动调整Excel。

现有代码示例:

import pandas as pd
test_df = pd.read_excel('file.xlsx')
test2_df = pd.read_excel('file2.xlsb')
test_total = test_df.merge(test2_df, how='outer').fillna(0)
test_total.to_excel('file_total.xlsx', index = False)

解决方案

1. 读取文件时保留表头日期的字符串格式

Pandas会自动将表头中的日期字符串解析为Timestamp类型,需要手动将其转回指定格式的字符串:

import pandas as pd

# 读取第一个文件并处理表头
test_df = pd.read_excel('file.xlsx', header=0)
test_df.columns = [
    col.strftime('%d.%m.%Y') if isinstance(col, pd.Timestamp) else col 
    for col in test_df.columns
]

# 读取第二个文件并做相同处理
test2_df = pd.read_excel('file2.xlsb', header=0)
test2_df.columns = [
    col.strftime('%d.%m.%Y') if isinstance(col, pd.Timestamp) else col 
    for col in test2_df.columns
]

2. 合并与填充空值(原有逻辑不变)

test_total = test_df.merge(test2_df, how='outer').fillna(0)

3. 导出时设置Excel数据列的日期格式

使用openpyxl引擎自定义日期格式,确保Excel中数据列显示为日-月-年且无时间:

from openpyxl.styles import NamedStyle

# 创建自定义日期样式(日-月-年格式)
date_style = NamedStyle(name='custom_date', number_format='DD.MM.YYYY')

# 导出Excel并应用格式
with pd.ExcelWriter('file_total.xlsx', engine='openpyxl') as writer:
    test_total.to_excel(writer, index=False)
    worksheet = writer.sheets['Sheet1']
    
    # 遍历表头,识别日期列并为整列应用格式
    for col_idx, col_name in enumerate(test_total.columns):
        try:
            # 验证列名是否为日-月-年格式的日期
            pd.to_datetime(col_name, format='%d.%m.%Y')
            # 从第二行开始(第一行是表头)为整列设置格式
            for row in range(2, len(test_total) + 2):
                worksheet.cell(row=row, column=col_idx + 1).style = date_style
        except ValueError:
            # 非日期列跳过
            continue

内容的提问来源于stack exchange,提问作者Антон

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:13:11