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

如何用pandas批量导入Excel、转换日期格式并提取各文件最新日期

修复方案

现有代码的核心问题

  • 存在变量拼写错误:日期列赋值时写的df_File1d多了末尾字符d,会直接触发名称错误
  • 日期解析逻辑写死了单种格式:既无法兼容带秒/不带秒的两种时间写法,也没处理第二种日期里年和时间之间的多余连续空格,必然解析失败
  • 逐文件硬编码读取逻辑太冗余:6个文件如果逐行写read_excel,后续改路径、加文件维护成本很高,不适合定期更新的场景

修复后完整代码

import pandas as pd
import re
from datetime import datetime

# 统一在这里配置所有要读取的文件,格式为(显示名称, 文件路径),新增文件直接往列表里加即可
file_config = [
    ("File 1", r"File1Location.xlsx"),
    ("File 2", r"File2Location.xlsx"),
    ("File 3", r"File3Location.xlsx"),
    ("File 4", r"File4Location.xlsx"),
    ("File 5", r"File5Location.xlsx"),
    ("File 6", r"File6Location.xlsx"),
]

def parse_date(date_str):
    # 预处理:转字符串、去掉首尾空格、把连续多个空格替换成单个空格
    clean_str = re.sub(r'\s+', ' ', str(date_str).strip())
    # 依次尝试两种格式解析,兼容带秒/不带秒的情况
    for fmt in ('%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M'):
        try:
            return datetime.strptime(clean_str, fmt)
        except ValueError:
            pass
    # 两种格式都解析失败时抛出明确错误,方便排查异常值
    raise ValueError(f"无法解析的日期格式: {date_str}")

if __name__ == "__main__":
    # 提前在终端执行 pip install pandas openpyxl 安装依赖,不要在代码内调用pip.main
    for file_name, file_path in file_config:
        # 读取单个Excel文件
        df = pd.read_excel(file_path, engine="openpyxl")
        # 解析日期列
        df["parsed_date"] = df["Date Created"].apply(parse_date)
        # 取最新日期,按要求的dd/mm/YYYY格式格式化输出
        latest_date = df["parsed_date"].max().strftime("%d/%m/%Y")
        print(f"-{file_name} : Latest Date: {latest_date}")

代码说明

  • 所有文件路径统一在file_config列表里维护,后续更新文件路径、新增/删除读取文件只需要改这个列表即可,不用重复写读取逻辑
  • 日期解析前先做空格归一化处理,不管日期和时间之间有1个还是多个空格都能正常识别,自动适配你提到的两种日期格式,遇到解析不了的异常值会抛出明确提示方便排查
  • 日期列转成datetime类型后直接用max()就能拿到最新时间,最后输出时统一转成你需要的日/月/年格式,和你给出的输出示例完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:46:04