如何使用Python Pandas筛选并加载日期大于指定日期的CSV文件
如何使用Python Pandas筛选并加载日期大于指定日期的CSV文件
嗨,看起来你已经搞定了单日期筛选的基础代码,现在要扩展成筛选指定日期之后的文件对吧?其实核心就是从文件名里提取出日期部分,再做大小比较就行,我来帮你调整代码:
问题分析
你原来的代码是靠判断字符串是否包含特定日期来筛选,但要实现“大于”的逻辑,得先把文件名里的日期单独拎出来——毕竟直接拿路径字符串和数字比肯定行不通(就像你试的20240905 > loc,loc是字符串,数字和字符串没法直接比大小)。
修改后的完整代码
import pandas as pd import numpy as np import glob import os import duckdb # 目标文件路径 _path = r'C:\temporary_location\\' # 设定你要对比的基准日期(YYYYMMDD格式,用整数或字符串都可以) target_date = 20240905 # 用来存储所有符合条件的数据集 frame_list = [] # 遍历路径下所有CSV文件 for file_path in glob.glob(_path + '*.csv'): # 1. 从文件名中提取日期部分 # 先拿到纯文件名(比如:file_name_20240906.csv) file_name = os.path.basename(file_path) # 拆分文件名,取最后一段(20240906.csv),再去掉.csv后缀 date_str = file_name.split('_')[-1].replace('.csv', '') # 转成整数方便比较(其实YYYYMMDD格式的字符串也能直接比,比如"20240906">"20240905"是成立的) file_date = int(date_str) # 2. 判断文件日期是否大于目标日期 if file_date > target_date: print('Loading', file_path) # 读取CSV文件 data = pd.read_csv(file_path, low_memory=False) # 将读取的数据加入列表,后续可以合并成一个大DataFrame frame_list.append(data) # 可选:把所有符合条件的数据合并成一个完整的DataFrame if frame_list: combined_df = pd.concat(frame_list, ignore_index=True) # 这里可以添加后续处理逻辑,比如存入duckdb等 else: print("未找到符合条件的CSV文件")
关键步骤说明
- 提取日期:用
os.path.basename()拿到纯文件名,再通过拆分和替换操作,把日期部分从文件名中分离出来。 - 日期比较:把日期字符串转成整数(或直接用字符串比较,因为YYYYMMDD格式的字符串排序和实际日期顺序完全一致),和
target_date对比后,筛选出符合条件的文件。 - 数据合并:把每个符合条件的文件数据存入列表,最后用
pd.concat()合并成一个大的DataFrame——如果你不需要合并,只需要单独处理每个文件,这部分可以省略。
预期效果
运行这段代码后,会自动加载并打印所有日期在20240905之后的文件,也就是你想要的这些:
C:\temporary_location\file_name_20240906.csv C:\temporary_location\file_name_20240907.csv C:\temporary_location\file_name_20240908.csv C:\temporary_location\file_name_20240909.csv C:\temporary_location\file_name_20240910.csv C:\temporary_location\file_name_20240911.csv C:\temporary_location\file_name_20240912.csv C:\temporary_location\file_name_20240913.csv
备注:内容来源于stack exchange,提问作者TCO
相关产品推荐
相关产品推荐

