如何为Pandas合并多CSV后的DataFrame设置多层级表头
实现带多层表头的CSV合并方案
直接用以下代码即可实现需求,同时保留每个文件的名称作为高层表头,低层表头统一为0-255:
import os import glob import pandas as pd path = r'may12_fm' all_files = glob.glob(os.path.join(path, '*.csv')) dfs = [] for file_path in all_files: # 提取文件名(去掉.csv后缀,如需保留后缀直接用os.path.basename(file_path)) file_name = os.path.splitext(os.path.basename(file_path))[0] # 读取单个CSV文件 df = pd.read_csv(file_path, header=None) # 为当前DataFrame设置多层列索引:高层是文件名,低层是0-255 df.columns = pd.MultiIndex.from_product([[file_name], df.columns]) dfs.append(df) # 按列合并所有DataFrame df_may = pd.concat(dfs, axis=1)
关键说明:
pd.MultiIndex.from_product:简洁生成「文件名 + 0-255」的多层索引组合,替代手动构造元组的繁琐方式- 合并后最终的DataFrame行数保持为8,列数为
文件数量 × 256,列索引为两层结构:第一层对应每个CSV文件的名称,第二层统一是0到255的编号
内容的提问来源于stack exchange,提问作者Talal Ghannam
相关产品推荐
相关产品推荐

