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

如何在Python中基于修改日期加载最近30天的Excel文件

筛选最近30天Excel文件并检查重复的解决方案

核心思路

  1. 计算30天前的时间阈值,用于判断文件修改时间是否符合要求
  2. 仅筛选.xlsx格式文件,避免处理无关文件
  3. 直接使用完整文件路径操作,无需频繁切换目录
  4. 用pd.concat()替代已弃用的df.append()合并数据

完整代码示例

import os
import pandas as pd
import time

# 替换为你的目标文件路径
search_dir = "path/to/your/excel/files"
# 计算30天前的时间戳(单位:秒)
thirty_days_ago = time.time() - 30 * 24 * 3600

# 初始化空DataFrame用于存储合并后的数据
merged_df = pd.DataFrame()

# 遍历目录,筛选符合条件的文件
for filename in os.listdir(search_dir):
    # 仅处理xlsx文件(兼容大小写后缀)
    if filename.lower().endswith(".xlsx"):
        file_full_path = os.path.join(search_dir, filename)
        # 确认是文件而非子目录
        if os.path.isfile(file_full_path):
            file_mtime = os.path.getmtime(file_full_path)
            # 判断文件修改时间是否在最近30天内
            if file_mtime >= thirty_days_ago:
                # 读取指定工作表
                sheet_data = pd.read_excel(file_full_path, sheet_name='Deal')
                # 合并数据到总DataFrame
                merged_df = pd.concat([merged_df, sheet_data], ignore_index=True)

# 检查重复数据的示例代码
# 标记重复行
merged_df['is_duplicate'] = merged_df.duplicated()
# 统计重复数量
print(f"重复条目总数:{merged_df['is_duplicate'].sum()}")
# 查看所有重复内容
# print(merged_df[merged_df['is_duplicate']])

可选:按修改时间排序后处理

如果需要按文件修改时间顺序处理,可先收集符合条件的文件再排序:

# 收集符合条件的文件(存储修改时间和完整路径)
valid_files = []
for filename in os.listdir(search_dir):
    if filename.lower().endswith(".xlsx"):
        file_full_path = os.path.join(search_dir, filename)
        if os.path.isfile(file_full_path):
            file_mtime = os.path.getmtime(file_full_path)
            if file_mtime >= thirty_days_ago:
                valid_files.append((file_mtime, file_full_path))

# 按修改时间升序排序(从旧到新),reverse=True则为从新到旧
valid_files.sort(key=lambda x: x[0])

# 遍历排序后的文件
for mtime, file_path in valid_files:
    sheet_data = pd.read_excel(file_path, sheet_name='Deal')
    merged_df = pd.concat([merged_df, sheet_data], ignore_index=True)

关键说明

  • 使用time.time()获取当前时间戳,与os.path.getmtime()返回的文件修改时间戳直接比较,逻辑更简洁
  • 加入filename.lower()避免因大小写后缀(如.XLSX)漏判文件
  • ignore_index=True确保合并后DataFrame的索引连续,避免索引冲突
  • pd.concat()是Pandas官方推荐的合并数据方式,替代已被标记为弃用的df.append()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:26:28