如何从含日期后缀的目录加载最新月份CSV至Pandas DataFrame?
基于文件名中的日期获取最新CSV文件并加载到Pandas DataFrame
我有一个目录,里面包含一系列命名格式固定的CSV文件,示例如下:
sacoronavirus_total_number_vaccinated_type_2022-04-30.csvsacoronavirus_total_number_vaccinated_type_2022-05-31.csvsacoronavirus_total_number_vaccinated_type_2022-06-30.csv
该目录会每月新增同格式的文件(比如后续的2022-09-30.csv、2022-10-31.csv),同时目录中还有其他不同前缀的无关文件。我需要基于文件名中的日期字符串找到最新月份的CSV文件,并将其加载到Pandas DataFrame中,而非依赖文件的创建/修改时间。
现有代码通过文件元数据的创建时间获取最新文件,但不符合需求:
import glob import os list_of_files = glob.glob('/path/to/folder/*') # * 表示所有文件,如需特定格式可改为*.csv latest_file = max(list_of_files, key=os.path.getctime) print(latest_file)
实现步骤
- 精准匹配目标文件:用
glob筛选出特定前缀的CSV文件,避免无关文件干扰; - 提取文件名中的日期:从每个目标文件名中提取日期字符串;
- 筛选最新日期的文件:利用ISO格式日期字符串的字典序与时间顺序一致的特性,找到对应最新日期的文件;
- 加载到Pandas DataFrame:用
pandas.read_csv()读取目标文件。
完整代码
import glob import pandas as pd # 替换为你的目标目录路径 folder_path = '/path/to/folder/' # 匹配特定前缀的CSV文件,排除其他无关文件 pattern = folder_path + 'sacoronavirus_total_number_vaccinated_type_*.csv' file_list = glob.glob(pattern) if not file_list: raise FileNotFoundError("未找到符合格式的目标CSV文件") # 从文件名中提取日期字符串 def extract_date_from_filename(filename): # 文件名格式固定,日期部分在最后一个下划线之后、.csv之前 return filename.split('_')[-1].replace('.csv', '') # 找到日期最新的文件 latest_file = max(file_list, key=lambda x: extract_date_from_filename(x)) # 加载到Pandas DataFrame df = pd.read_csv(latest_file) print(f"已加载最新文件: {latest_file}")
代码说明
glob的匹配模式确保只获取目标前缀的文件,不会包含其他无关文件;- 文件名中的日期为
YYYY-MM-DD的ISO格式,直接比较字符串即可得到正确的时间顺序; - 加入空列表判断,避免因没有目标文件导致后续代码报错。
内容的提问来源于stack exchange,提问作者Mazil_tov998
相关产品推荐
相关产品推荐

