如何以Pythonic方式将变量作为另一变量的组成部分?
读取CSV数据文件与配置文件的实现方案
我最近在处理一组CSV文件,分为两类:一类是按月份划分的数据文件(比如data_jan2018.csv、data_feb2018.csv),另一类是存储日期范围配置的config.csv文件。下面是我整理的完整实现思路和代码:
第一步:读取配置文件并提取日期范围
首先从配置文件中读取需要处理的日期区间,去重后整理成清晰的日期范围列表:
import pandas as pd import os # 定义文件路径和名称 loc = "./your_file_directory/" # 替换为你的实际文件目录 data_config_name = "config.csv" # 读取配置文件 data_config = pd.read_csv(os.path.join(loc, data_config_name)) # 提取去重后的日期范围(保留Start_date和End_date列) dates = data_config.drop_duplicates('Start_date')[['Start_date', 'End_date']] # 可选:将日期列转换为datetime格式,方便后续筛选操作 dates['Start_date'] = pd.to_datetime(dates['Start_date']) dates['End_date'] = pd.to_datetime(dates['End_date'])
第二步:读取并处理月度数据文件
接下来根据配置的日期范围,匹配对应的月度数据文件并完成读取与筛选:
# 遍历每一组日期范围 for idx, row in dates.iterrows(): # 将起始日期转换为数据文件命名对应的格式(比如jan2018) start_month = row['Start_date'].strftime("%b%Y").lower() data_file_name = f"data_{start_month}.csv" data_file_path = os.path.join(loc, data_file_name) # 先检查文件是否存在,避免报错 if os.path.exists(data_file_path): # 读取月度数据文件 monthly_data = pd.read_csv(data_file_path) # 可选:根据当前日期范围筛选数据(假设数据文件有date列) monthly_data['date'] = pd.to_datetime(monthly_data['date']) filtered_data = monthly_data[(monthly_data['date'] >= row['Start_date']) & (monthly_data['date'] <= row['End_date'])] # 这里可以添加你的后续处理逻辑,比如合并数据、统计分析等 print(f"处理完成:{data_file_name},筛选后有效数据行数:{len(filtered_data)}") else: print(f"警告:未找到目标文件 {data_file_name},跳过该日期范围处理")
实用小提示
- 建议统一将所有日期列转换为
datetime格式,避免因字符串格式不一致导致的筛选错误 - 如果数据文件的命名规则有变化,只需调整
start_month的格式化逻辑即可适配 - 若需要合并所有筛选后的数据,可以初始化一个空DataFrame,在循环中用
pd.concat逐步合并结果
内容的提问来源于stack exchange,提问作者Aaraeus
相关产品推荐
相关产品推荐

