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

如何在Python Pandas中将DataFrame的JSON列转为常规列?

解决方法

核心问题原因

你遇到的报错是因为COL3(以及真实数据里的COL6、COL7)是字符串类型的JSON格式数据,而非Python字典对象。pd.json_normalize()需要接收字典/列表形式的输入,直接传入字符串会触发AttributeError。

分步实现解析

1. 导入依赖

先导入必要的库:

import pandas as pd
import json
from ast import literal_eval  # 用于处理包含集合的特殊JSON字符串(如COL4)

2. 解析普通JSON字符串列(如COL3、COL6、COL7)

以COL3为例,先将字符串转为Python字典,再用json_normalize解析并合并到原表:

# 读取数据
ABT = pd.read_excel("ABT.xlsx")

# 将COL3的JSON字符串转为字典
ABT["COL3"] = ABT["COL3"].apply(json.loads)

# 解析COL3为单独列,与原表横向合并
col3_normalized = pd.json_normalize(ABT["COL3"])
result = pd.concat([ABT, col3_normalized], axis=1)

执行后就能得到你需要的X、y列,同时保留原COL3列。

针对真实数据里的COL6和COL7,处理逻辑完全一致:

# 解析COL7
ABT["COL7"] = ABT["COL7"].apply(json.loads)
col7_normalized = pd.json_normalize(ABT["COL7"])
result = pd.concat([result, col7_normalized], axis=1)

# 解析嵌套结构的COL6
ABT["COL6"] = ABT["COL6"].apply(json.loads)
col6_normalized = pd.json_normalize(ABT["COL6"])
# 简化嵌套列名(去掉前缀paAccounts.)
col6_normalized.columns = col6_normalized.columns.str.replace("paAccounts.", "")
result = pd.concat([result, col6_normalized], axis=1)

3. 处理COL4(含集合的特殊JSON字符串)

注意:示例中COL4的格式{"A":{1,2}, "B":{3,3}}不是标准JSON(JSON不支持集合类型),json.loads无法解析,需要用ast.literal_eval解析Python字面量:

# 将COL4的字符串转为含集合的Python字典
ABT["COL4"] = ABT["COL4"].apply(literal_eval)

# 解析COL4:建议将集合转为列表(集合无序且在DataFrame中处理不友好)
col4_normalized = pd.json_normalize(ABT["COL4"]).applymap(lambda x: list(x))

# 合并到结果表
result = pd.concat([result, col4_normalized], axis=1)

COL4的输出形式推荐转为列表(如[1,2]),既能保留去重后的元素,又更适合后续数据处理。

完整代码示例

import pandas as pd
import json
from ast import literal_eval

# 读取数据
ABT = pd.read_excel("ABT.xlsx")

# 处理COL3
ABT["COL3"] = ABT["COL3"].apply(json.loads)
col3_norm = pd.json_normalize(ABT["COL3"])

# 处理COL4
ABT["COL4"] = ABT["COL4"].apply(literal_eval)
col4_norm = pd.json_normalize(ABT["COL4"]).applymap(list)

# 合并所有结果
final_result = pd.concat([ABT, col3_norm, col4_norm], axis=1)

# 查看结果
print(final_result.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 02:50:28