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

如何规范化Pandas DataFrame中的嵌套JSON为T1_time等结构化字段?

解决方案:将嵌套JSON规范化为结构化字段

问题原因

你当前的DataFrame中,T1和T2列存储的是包含单个字典的数组,直接调用pd.json_normalize(df)无法解析这种嵌套结构——它默认处理的是字典或字典列表,而非包含数组的DataFrame列。

可行方案

方案1:从JSON字典直接处理(推荐)

先将JSON读取为字典,再分别对每个键对应的数组进行规范化,最后合并结果:

import pandas as pd
import json

path_to_json = 'dir/dir/data.json' 

# 读取JSON为字典
with open(path_to_json, 'r') as f:
    data = json.load(f)

# 遍历每个键(T1、T2),规范化并添加前缀
processed_dfs = []
for key in data.keys():
    # 规范化数组内的字典
    temp_df = pd.json_normalize(data[key])
    # 给列名加上前缀(如T1_time)
    temp_df.columns = [f"{key}_{col}" for col in temp_df.columns]
    processed_dfs.append(temp_df)

# 合并所有处理后的DataFrame
final_df = pd.concat(processed_dfs, axis=1)

方案2:基于已加载的DataFrame处理

如果你已经通过pd.read_json得到了原DataFrame,可以先取出每个数组列中的字典元素,再进行规范化:

import pandas as pd
import json

path_to_json = 'dir/dir/data.json' 
df = pd.read_json(path_to_json, lines=True)

# 处理T1列:取出数组中的字典,规范化并重命名列
t1_df = pd.json_normalize(df['T1'].str[0])
t1_df.columns = ['T1_time', 'T1_data']

# 处理T2列:同理
t2_df = pd.json_normalize(df['T2'].str[0])
t2_df.columns = ['T2_time', 'T2_data']

# 合并结果
final_df = pd.concat([t1_df, t2_df], axis=1)

最终结果

两种方案都会生成如下结构的DataFrame:

T1_timeT1_dataT2_timeT2_data
2021-03-25T13:31:58+01:00-12021-03-25T13:17:02+01:00[23,35,54,44,55,44,33,44,55,66,88,65]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:20:28