Python合并Pickle文件问题:DataFrame合并后得到列表类型
解决Pickle文件合并为单一DataFrame的问题
你的代码当前只是将所有DataFrame收集到一个列表中,最后序列化保存的是这个列表,所以结果类型是List。要得到单一的DataFrame格式文件,需要用pandas的pd.concat()方法将列表中的DataFrame合并为一个整体。
修正后的代码
import os import pickle import pandas as pd def combine_pickle_files(directory_path, output_file): df_list = [] for filename in os.listdir(directory_path): if filename.endswith('.pkl'): file_path = os.path.join(directory_path, filename) with open(file_path, 'rb') as f: df = pickle.load(f) # 可选校验:确保加载的内容是DataFrame,避免非目标文件报错 if isinstance(df, pd.DataFrame): df_list.append(df) # 合并所有DataFrame,按行拼接并重置索引 combined_df = pd.concat(df_list, ignore_index=True) # 保存合并后的单一DataFrame with open(output_file, 'wb') as out: pickle.dump(combined_df, out, protocol=pickle.HIGHEST_PROTOCOL) # 调用示例 combine_pickle_files('/home/dataset/', '/home/dataset/result.pkl')
关键说明
pd.concat()默认按行合并(axis=0),如果需要按列合并可指定axis=1,一般场景下用行合并即可ignore_index=True会重置合并后DataFrame的索引,避免原各DataFrame的索引重复导致的混乱- 新增的类型校验可以过滤掉意外混入的非DataFrame格式Pickle文件,提升代码健壮性
内容的提问来源于stack exchange,提问作者miladjurablu
相关产品推荐
相关产品推荐

