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

如何合并循环生成的DataFrame?附JSON转DataFrame循环代码

如何合并循环生成的多个DataFrame?

你现在的代码每次循环都会单独输出处理后的df5,要把所有这些小DataFrame合并成一个整体其实很简单,核心思路是先把每个循环生成的df5收集到一个列表里,最后一次性合并整个列表,具体操作如下:

步骤1:初始化一个空列表存储所有小DataFrame

在循环开始前,先创建一个空列表,比如叫all_dfs,专门用来装每次循环生成的df5。

步骤2:修改循环内代码,将df5追加到列表

把原来循环里的print(df5)改成all_dfs.append(df5),这样每处理一个JSON文件,对应的df5就会被存到列表里。

步骤3:循环结束后合并所有DataFrame

用pd.concat()把列表里的所有小DataFrame合并成一个大的DataFrame即可。

修改后的完整代码如下:

import os
import json
import pandas as pd

# 初始化空列表
all_dfs = []

for filename in os.listdir('json1'):
    with open(os.path.join('json1',filename),'r') as json_data:
        d=json.load(json_data)
        df2=pd.io.json.json_normalize(d)
        df2.columns = df2.columns.map(lambda x: x.split(".")[-1])
        df3=pd.io.json.json_normalize(d['Reviews'])
        df3.columns = df3.columns.map(lambda x: x.split(".")[-1])
        df4=pd.concat([df2]*df3.shape[0],ignore_index=True)
        df5=df4.join(df3)
        # 把每个df5追加到列表,替代print输出
        all_dfs.append(df5)

# 合并所有DataFrame
final_df = pd.concat(all_dfs, ignore_index=True)
# 查看合并后的最终结果
print(final_df)

小提示

为什么用列表收集再一次性合并?因为如果在循环里每次都用pd.concat合并到一个大DataFrame,每次都会复制整个大DataFrame,数据量大的时候会很慢;而先存列表最后合并只需要一次操作,效率会高很多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:46