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

如何将DataFrame中含JSON对象的列拆分扩展为多列?

解决方法:将DataFrame中的JSON列拆分为多列

嗨,这个需求用pandas就能轻松搞定,我给你两种实用方案,你可以根据自己的场景选:

方法一:直接用pd.json_normalize(推荐)

如果你的JSON列已经是字典类型(不是字符串格式),直接用pd.json_normalize就能一键展开成目标列:

import pandas as pd

# 模拟你的原始DataFrame
df = pd.DataFrame({
    'json_col': [{'a': 'x', 'b':'y', 'c':'z'}, {'a': 'x1', 'b':'y2', 'c':'z3'}]
})

# 把JSON列展开为a、b、c单独列
expanded_df = pd.json_normalize(df['json_col'])

# 如果原DataFrame还有其他需要保留的列,用concat合并即可
# final_df = pd.concat([df.drop('json_col', axis=1), expanded_df], axis=1)

print(expanded_df)

运行后输出就是你想要的格式:

a   b   c
0   x   y   z
1  x1  y2  z3

方法二:先转字典再展开(如果列是字符串类型)

如果你的JSON列存储的是字符串格式的JSON(比如"{'a': 'x', 'b':'y', 'c':'z'}"),需要先把字符串转成字典,再用上面的方法:

import pandas as pd
import json

# 模拟字符串类型的JSON列
df = pd.DataFrame({
    'json_col': ["{'a': 'x', 'b':'y', 'c':'z'}", "{'a': 'x1', 'b':'y2', 'c':'z3'}"]
})

# 先将字符串转成字典(如果你的字符串用双引号,直接json.loads(x)就行)
df['json_col'] = df['json_col'].apply(lambda x: json.loads(x.replace("'", '"')))

# 再展开为目标列
expanded_df = pd.json_normalize(df['json_col'])

补充小提示

  • pd.json_normalize会自动把字典的键作为新列名,对应的值会精准填充到每一行
  • 如果原表有其他需要保留的列,记得用pd.concat把原表(去掉JSON列)和展开后的表按列合并

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:32:45