You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量加载文件夹中Pickle文件并合并为单个Pandas DataFrame

批量加载并合并Pickle文件为单个Pandas DataFrame

没问题,我帮你把单文件处理的逻辑扩展成了批量处理的代码,能自动加载ethnicity_files文件夹下所有imdbnames0.pkl到imdbnames40.pkl的文件,最后合并成一个完整的DataFrame。

完整批量处理代码

import pickle
import pandas as pd
from glob import glob

# 匹配所有目标pickle文件(自动覆盖0到40的编号)
file_pattern = "ethnicity_files/imdbnames*.pkl"
all_files = glob(file_pattern)

# 初始化列表,存储每个文件处理后的DataFrame片段
df_fragments = []

for file_path in all_files:
    # 安全加载pickle文件(用with语句自动管理文件句柄)
    with open(file_path, 'rb') as fh:
        data_dict = pickle.load(fh)
    
    # 完全复用你验证过的单文件处理逻辑
    processed_df = pd.concat({k: pd.json_normalize(v, 'scores', ['best']) for k, v in data_dict.items()})
    processed_df = processed_df.reset_index(level=1, drop=True).rename_axis('names').reset_index()
    
    # 将当前文件的结果加入列表
    df_fragments.append(processed_df)

# 合并所有片段为最终的完整DataFrame
final_merged_df = pd.concat(df_fragments, ignore_index=True)

# 查看合并后的结果
final_merged_df.head()

关键步骤说明

  • 自动匹配文件:用glob()函数匹配所有符合imdbnames*.pkl规则的文件,不用手动逐个输入文件名,避免遗漏或编号错误。
  • 安全文件操作:用with语句打开文件,会自动关闭文件句柄,避免资源泄漏问题。
  • 保留原有逻辑:完全沿用你已经验证过的单文件处理流程,确保每个文件的输出格式和你预期的一致。
  • 合并优化:先把每个文件的处理结果存入列表,最后一次性合并,比边循环边合并更高效,尤其适合大量文件的场景。

处理后的数据格式示例

names         ethnicity     score  best
0 !Gubi Tietie Asian        0.03    GreaterEuropean
1 !Gubi Tietie GreaterAfrican 0.01 GreaterEuropean
2 !Gubi Tietie GreaterEuropean 0.96 GreaterEuropean
3 !Gubi Tietie British      0.17    WestEuropean
4 !Gubi Tietie Jewish       0.13    WestEuropean
...

内容的提问来源于stack exchange,提问作者Shivam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:02:41