如何通过日期列单元格从Python DataFrame列表中访问目标DataFrame
用日期键快速访问DataFrame
你可以把原来的列表改成字典,用日期字符串作为键,这样就能直接通过df_dict['2022-04-20']来访问对应DataFrame,下面是两种思路的具体实现:
方法一:从CSV文件名提取日期
针对xxxx_YYYY-MM-DD.csv格式的文件名,直接拆分字符串提取日期部分:
import pandas as pd import glob import os path = "C:/Users/dsdadsdsaa/" all_files = glob.glob(path + '*.csv') # 用字典替代列表存储DataFrame df_dict = {} for filename in all_files: # 提取纯文件名(去掉路径) base_name = os.path.basename(filename) # 拆分出日期:按下划线分割取最后一段,再去掉.csv后缀 date_str = base_name.split('_')[-1].replace('.csv', '') # 读取文件并存入字典 dataframe = pd.read_csv(filename, index_col=None, header=0) df_dict[date_str] = dataframe # 批量处理date和time列 for date_key in df_dict: df_dict[date_key]['date'] = pd.to_datetime(df_dict[date_key]['date']) df_dict[date_key]['time'] = pd.to_datetime(df_dict[date_key]['time']) # 示例访问 print(df_dict['2022-04-01'])
方法二:利用DataFrame的date列获取日期
假设每个文件对应的date列所有值为同一天,提取该列的唯一日期作为键:
import pandas as pd import glob import os path = "C:/Users/dsdadsdsaa/" all_files = glob.glob(path + '*.csv') df_dict = {} for filename in all_files: dataframe = pd.read_csv(filename, index_col=None, header=0) # 先转换date列格式 dataframe['date'] = pd.to_datetime(dataframe['date']) # 提取唯一日期并转为YYYY-MM-DD字符串 date_str = dataframe['date'].dt.date.unique()[0].strftime('%Y-%m-%d') # 转换time列后存入字典 dataframe['time'] = pd.to_datetime(dataframe['time']) df_dict[date_str] = dataframe # 示例访问 print(df_dict['2022-04-20'])
注意:如果某个DataFrame的date列包含多日期,方法二需要调整逻辑(比如按日期分组),确保每个文件对应单一日期再使用该方法。
内容的提问来源于stack exchange,提问作者DrJokerr
相关产品推荐
相关产品推荐

