读取多份CSV文件时如何将文件名中的日期时间部分追加到对应列名
你不需要在拼接后再修改列名,在读取单个CSV文件时就完成列名修改,能大幅提升效率,同时避免转置、硬编码行号等不稳定操作。
实现逻辑如下:
- 读取每个CSV时,从文件名提取出
yyyy-mm-dd_hh-mm-ss格式的时间部分 - 直接将时间追加到当前DataFrame的列名后
- 拼接时移除
ignore_index=True参数,保留已修改好的列名
完整优化代码:
import pandas as pd import glob import os path = r'C:\Users\...' # 替换为你的实际路径 all_files = glob.glob(path + "/*.csv") li = [] for filename in all_files: # 读取CSV df = pd.read_csv(filename, index_col=None, header=0) # 提取文件名中的时间部分 base_name = os.path.basename(filename) datetime_part = '_'.join(base_name.split('_')[:2]) # 修改当前DataFrame的列名,追加时间信息 original_col = df.columns[0] df.columns = [f"{original_col}_{datetime_part}"] li.append(df) # 拼接时不要加ignore_index=True,保留自定义列名 frame = pd.concat(li, axis=1)
补充说明:
- 如果你不需要保留CSV原列名,直接用时间作为列名,把修改列名的代码改成
df.columns = [datetime_part]即可 - 该方案全程不需要转置操作,时间复杂度仅和读取CSV、拼接的原生效率一致,不会额外占用过多资源
- 避免了硬编码行号的问题,不管CSV数据有多少行都能正常运行
内容的提问来源于stack exchange,提问作者R_Dax
相关产品推荐
相关产品推荐

