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

如何将嵌套字典列表转换为Pandas DataFrame?

如何将嵌套字典列表转换为扁平化的Pandas DataFrame?

你碰到的这个问题太常见了——当你的字典列表里包含嵌套子字典(比如示例里的comments、likes、reposts这些字段)时,直接用常规的DataFrame构造方法要么得不到想要的结构,要么直接报错。

先明确你的需求:把每个VK帖子(列表里的单个字典)转成DataFrame的一行,不管是顶层字段(id、text、date)还是嵌套在子字典里的字段(比如likes.count、comments.can_post),都要变成单独的列。

最优解决方案:用pandas.json_normalize()

这是Pandas专门为处理嵌套JSON/字典结构设计的工具,一步就能生成你要的扁平化DataFrame,完全不需要写循环拼接的复杂代码。

直接运行这段代码就行:

import pandas as pd

# 假设你的嵌套字典列表变量是list_of_dicts
df = pd.json_normalize(list_of_dicts)

运行后你会得到一个完美的DataFrame:每一行对应一个帖子,所有嵌套字段都会被展开成类似likes.count、comments.can_post的列名,所有属性都清晰对应。

为什么之前的方法失效?

  • 直接用pd.DataFrame(list_of_dicts):Pandas会把嵌套的子字典当作单个列的“值”,而不是自动展开成新列,所以你才会得到只有两列的异常结果。
  • 循环用from_dict()拼接:from_dict()默认要求输入的字典是“键为列名,值为整列数据”的格式,但你的单个字典是“键为字段,值可能是普通值或子字典”,结构不匹配,自然触发了ValueError。

可选:自定义嵌套字段的分隔符

如果你不喜欢默认的.分隔嵌套层级,可以用sep参数指定自己想要的分隔符,比如下划线:

df = pd.json_normalize(list_of_dicts, sep='_')

这样列名就会变成likes_count、comments_can_post这种格式,更符合一些人的命名习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:22:03