如何读取目录下全部Excel文件到DataFrame并从文件名提取日期新增列
解决方案
你可以通过文件名处理模块截取固定位置的日期字符串,再转换为标准日期格式写入新增列,以下是修改后的可运行代码:
import pandas as pd import glob import os all_data = [] for f in glob.glob('my directory/*.xlsx'): df = pd.read_excel(f) # 提取纯文件名(去除路径和后缀) pure_filename = os.path.splitext(os.path.basename(f))[0] # 截取末尾8位的日期字符串 date_str = pure_filename.strip()[-8:] # 转换为日期格式,若你的日期为月/日/年格式,可将format改为'%m.%d.%y' df['date'] = pd.to_datetime(date_str, format='%d.%m.%y') all_data.append(df) # 合并所有数据 all_data = pd.concat(all_data, ignore_index=True)
可选优化(适配非固定位置日期)
如果后续文件名规则调整,日期不在末尾,可使用正则表达式匹配日期格式,只需修改日期提取部分的代码即可:
import re # 匹配文件名中所有xx.xx.xx格式的字符串,取第一个匹配结果 date_str = re.findall(r'\d{2}\.\d{2}\.\d{2}', pure_filename)[0]
说明
- 原代码中循环调用
DataFrame.append的方式在pandas新版本中已废弃,且执行效率低,改用列表暂存所有子数据最后一次性合并的方案性能提升明显 pd.to_datetime的format参数可根据你实际的日期规则调整,避免自动解析出现错误
内容的提问来源于stack exchange,提问作者user16600852
相关产品推荐
相关产品推荐

