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

如何将JSON单列数据拆分到Pandas DataFrame多列中?

问题根源

  • 你碰到的TypeError是典型的函数误用:json.loads()仅负责将JSON格式的字符串/字节数据解析为Python字典,而你已经通过urllib3+json库拿到了字典对象,再对字典调用该函数必然报错。
  • 拆分result列的核心需求,本质是要把DataFrame中存储字典的单列,展开为多个独立字段列。

解决方法

根据数据获取方式,分两种场景给出具体实现:

场景1:通过urllib3 + json库获取数据后处理

import urllib3
import json
import pandas as pd

# 1. 正确获取并解析JSON数据(仅对响应字节用json.loads)
http = urllib3.PoolManager()
response = http.request('GET', '你的JSON数据源URL')
data_dict = json.loads(response.data)  # 这里是把字节转字典,是正确用法

# 2. 转换为DataFrame
df = pd.DataFrame(data_dict)

# 3. 展开result列的字典为多列
result_expanded = pd.json_normalize(df['result'])

# 4. 合并原表的其他列(如total)与展开后的列
final_df = pd.concat([df.drop('result', axis=1), result_expanded], axis=1)

# 5. 导出到Excel
final_df.to_excel('输出文件.xlsx', index=False)

场景2:直接读取本地JSON文件

如果是本地JSON文件,用Pandas直接读取更高效:

import pandas as pd

# 1. 读取JSON文件(Pandas会自动完成基础解析)
df = pd.read_json('你的本地JSON文件路径')

# 2. 展开result列的字典结构
result_expanded = pd.json_normalize(df['result'])

# 3. 合并列并导出
final_df = pd.concat([df.drop('result', axis=1), result_expanded], axis=1)
final_df.to_excel('输出文件.xlsx', index=False)

特殊情况处理

如果df['result']中存在字符串格式的字典(比如之前错误操作遗留的),可以先转换为字典再展开:

import ast
# 遍历result列,把字符串格式的字典转成Python字典
df['result'] = df['result'].apply(lambda x: ast.literal_eval(x) if isinstance(x, str) else x)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:39:19