如何在Python中通过Pandas读取文件时从文件名提取日期并新增列
解决方案:批量读取文件并提取文件名中的日期与前缀
这事儿用Pandas配合Python的文件操作模块就能轻松搞定,下面是完整的实现代码,我会一步步解释细节:
步骤1:导入所需库
首先得导入pandas和glob(用来匹配文件夹里的文件,比os.listdir更方便):
import pandas as pd import glob
步骤2:批量处理文件并构建DataFrame
我们可以先获取所有目标txt文件的路径,然后逐个读取、处理,最后合并成一个大的DataFrame:
# 设置你的文件夹路径,比如 './data/' folder_path = './your_folder_path/' # 匹配所有txt文件 file_paths = glob.glob(folder_path + '*.txt') # 初始化一个空列表,用来存储每个文件处理后的DataFrame df_list = [] for file in file_paths: # 从文件路径中提取文件名(比如 'X_04_24_2018.txt') filename = file.split('/')[-1] # 如果是Windows系统,换成 '\\' # 分割文件名,提取前缀和日期部分 prefix, month, day, year = filename.split('_') # 去掉日期部分的.txt后缀 year = year.replace('.txt', '') # 读取当前文件的2列数据 df = pd.read_csv(file, header=None, names=['Col1', 'Col2']) # 添加Date列和File列 # 格式化为你要的 '4/24/2018' 样式 df['Date'] = f"{int(month)}/{int(day)}/{year}" df['File'] = prefix # 将处理后的DataFrame加入列表 df_list.append(df) # 合并所有DataFrame final_df = pd.concat(df_list, ignore_index=True) # 查看结果 print(final_df)
关键细节说明
- 文件名分割:用
split('_')把文件名拆分成前缀、月、日、年四部分,再去掉年后面的.txt后缀。如果你的文件名格式有变化,这个分割逻辑可以灵活调整。 - 日期格式:我把月份和日期转成整数后再拼接,这样就能得到
4/24/2018而不是04/24/2018,如果需要保留前导零,直接用f"{month}/{day}/{year}"就行。 - 读取文件:用
pd.read_csv读取txt文件,因为是2列无表头数据,所以指定header=None和names=['Col1', 'Col2']来设置列名。 - 合并DataFrame:用
pd.concat把所有小DataFrame合并成一个,ignore_index=True用来重置行索引,避免索引重复。
如果你的文件是用其他分隔符(比如制表符)分隔的,可以给pd.read_csv加sep='\t'参数来适配。
内容的提问来源于stack exchange,提问作者Rajesh
相关产品推荐
相关产品推荐

