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

嵌套字典转pandas DataFrame:生成data_1、data_2对应时间序列表

处理思路

先把嵌套结构的原始数据展平为每行包含「时间索引、进程名、data_1值、data_2值」的长表,再通过透视操作转换为你需要的、行索引为进程名列索引为时间的宽表,缺失值会自动填充为NaN。

完整代码

import pandas as pd

# raw_data替换为你实际的原始嵌套字典
raw_data = {
    1: [{"pid_name":"process_A", "data":{"data_1":1234, "data_2":2345}}, {"pid_name":"process_B", "data":{"data_1":1111, "data_2":3456}}, {"pid_name":"process_C", "data":{"data_1":23, "data_2":4567}}],
    2: [{"pid_name":"process_A", "data":{"data_1":212, "data_2":123}}, {"pid_name":"process_B", "data":{"data_1":222, "data_2":234}}, {"pid_name":"process_C", "data":{"data_1":456, "data_2":345}}, {"pid_name":"process_D", "data":{"data_1":789, "data_2":456}}]
}

# 第一步:展平原始数据为长表结构
records = []
for time_idx, proc_list in raw_data.items():
    for proc in proc_list:
        # 过滤不符合格式的空字典/异常数据
        if not all(k in proc for k in ("pid_name", "data")):
            continue
        records.append({
            "time_idx": time_idx,
            "pid_name": proc["pid_name"],
            "data_1": proc["data"]["data_1"],
            "data_2": proc["data"]["data_2"]
        })
df_long = pd.DataFrame(records)

# 第二步:分别生成data_1、data_2的目标DataFrame
df_data1 = df_long.pivot(index="pid_name", columns="time_idx", values="data_1")
df_data2 = df_long.pivot(index="pid_name", columns="time_idx", values="data_2")

输出说明

最终输出的df_data1、df_data2完全匹配你给出的示例结构,进程缺失的时间点数值自动填充为NaN,可直接用于多折线时间序列图绘制。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:03