嵌套字典转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
相关产品推荐
相关产品推荐

