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

Python中如何合并循环生成的多个Pandas DataFrame为单个DataFrame?

解决方案:合并JSON提取后的Pandas DataFrame

你的核心问题是在循环中重复创建DataFrame,没有先统一收集所有数据,导致每次循环都生成单独的小DataFrame。正确的思路是先把所有符合条件的数据收集到一个列表或字典中,最后一次性生成合并后的DataFrame。

方案一:用列表收集所有条目(推荐)

直接遍历JSON数据,把每个符合条件的字段存入临时字典,再将字典加入列表,最后用列表生成完整DataFrame:

import pandas as pd

# 初始化空列表,存储所有提取到的条目
data_list = []

# 遍历JSON中的历史记录
for data in list_json[0]["changelog"]["histories"]:
    entry = {}
    # 提取Name字段
    if data["items"][0]["field"] == "issuetype" and data["items"][0]["from"] == "10901":
        entry["Name"] = data["name"]
    # 提取Date字段
    if data["items"][0]["field"] == "Date" and data["items"][0]["to"] == "1942":
        entry["Date"] = data["date"]
    # 仅将有有效数据的条目加入列表
    if entry:
        data_list.append(entry)

# 生成合并后的DataFrame
final_df = pd.DataFrame(data_list)
# 调整列顺序(确保Name、Date在前)
desired_cols = ["Name", "Date"]
final_df = final_df[desired_cols + [col for col in final_df.columns if col not in desired_cols]]

方案二:按对象标识累积数据(适配原代码的storyDict逻辑)

如果你的each变量是用来区分不同对象的标识,可以先按each累积每个对象的信息,最后一次性转成DataFrame:

import pandas as pd

# 初始化字典,按对象标识存储信息
storyDict = {}

for data in list_json[0]["changelog"]["histories"]:
    # 确保当前对象标识已存在于字典中
    if each not in storyDict:
        storyDict[each] = {}
    # 填充Name字段
    if data["items"][0]["field"] == "issuetype" and data["items"][0]["from"] == "10901":
        storyDict[each]["Name"] = data["name"]
    # 填充Date字段
    if data["items"][0]["field"] == "Date" and data["items"][0]["to"] == "1942":
        storyDict[each]["Date"] = data["date"]

# 将字典转成DataFrame,重置索引为对象ID列
final_df = pd.DataFrame.from_dict(storyDict, orient="index").reset_index(names="ObjectID")
# 调整列顺序
desired_cols = ["ObjectID", "Name", "Date"]
final_df = final_df[desired_cols + [col for col in final_df.columns if col not in desired_cols]]

两种方案都避免了循环中重复创建DataFrame的问题,最终得到包含所有对象行的单一DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:14:55