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

pd.read_excel读取Excel时日期字符串转整数的解决方法

Excel日期序列号转dd/mm/yyyy格式的解决方案

问题根源

你看到的整数(比如43800)是Excel的日期序列号,它的基准本应是1900-01-01,但由于Excel的历史bug(误把1900年判定为闰年),实际对应的起始日期是1899-12-30。之前的代码把这些整数当成了Unix时间戳(以1970-01-01为基准),所以才会全部输出01/01/1970。

两种解决方法

方法1:读取文件时直接解析日期

在pd.read_excel中直接指定要解析的日期列,同时适配Excel的日期规则:

import pandas as pd

# 替换为你的文件路径和目标日期列名
client_entity_df = pd.read_excel(
    "your_file.xlsx",
    parse_dates=["成立日期", "其他日期列"],
    date_parser=lambda x: pd.to_datetime(x, origin="1899-12-30", unit="D")
)

# 按需转成dd/mm/yyyy格式的字符串
for col in columns_with_date_string:
    client_entity_df[col] = client_entity_df[col].dt.strftime("%d/%m/%Y")

方法2:读取后转换已有的整数列

如果数据已经读到DataFrame中,直接对整数格式的日期列做转换:

for col in columns_with_date_string:
    # 将Excel序列号转为datetime对象
    client_entity_df[col] = pd.to_datetime(
        client_entity_df[col],
        origin="1899-12-30",
        unit="D"
    )
    # 转成dd/mm/yyyy格式的字符串
    client_entity_df[col] = client_entity_df[col].dt.strftime("%d/%m/%Y")

额外提示

  • 如果后续需要进行日期计算(比如加减天数、筛选区间),建议保留datetime类型,跳过strftime转换步骤。
  • 可以先拿单个值验证逻辑:执行pd.to_datetime(43800, origin="1899-12-30", unit="D"),应该得到Excel中对应的正确日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:50:41