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

Pandas DataFrame列含字典值的处理方式咨询

处理DataFrame中字典类型列的实用建议

作为天天和Pandas打交道的老玩家,我来给你唠唠这个问题~其实没有绝对的“正确答案”,完全取决于你后续要怎么用这些数据,我结合日常经验给你拆解两种方式的利弊:

一、把字典转换成单独列(展开为Series)

如果你的后续操作需要单独访问字典里的某个键值、做统计分析、或者和其他列做关联计算,那展开成列绝对是更优选择。举个实际例子:
假设你的DataFrame长这样:

import pandas as pd
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [{'x':10, 'y':20}, {'x':30, 'y':40}, {'x':50, 'y':60}],
    'C': ['foo', 'bar', 'baz']
})

你可以用pd.json_normalize()快速把字典列展开,再和原表合并:

df_expanded = pd.concat([df.drop('B', axis=1), pd.json_normalize(df['B'])], axis=1)

展开后原来字典的键x、y都变成了独立列,后续做筛选(比如df_expanded[df_expanded['x'] > 20])、聚合统计都非常顺手,完全贴合Pandas矢量化操作的核心优势。

唯一需要注意的是,如果字典的键不统一(有的有x有的没有),展开后会出现缺失值,但Pandas处理缺失值的工具很成熟,反而比留着字典更容易处理。

二、保留字典类型

如果你的字典是不需要拆解的“整体数据”——比如后续只是要把字典原样导出(比如转成JSON传给接口)、或者只是作为标记性的元数据存在,那完全可以保留字典类型。

但要敲个警钟:Pandas对嵌套字典的支持非常有限,你没法用除了df['B'].apply(lambda x: x['x'])之外的矢量化操作,要是做筛选、分组这类常规操作,效率会极低——本质上是在做循环处理,违背了Pandas的设计初衷。

资深用户的通用做法

我身边的Pandas老玩家,90%以上的场景都会选择把字典展开成列,除非有明确的业务需求必须保留嵌套结构。原因很简单:Pandas的核心优势就是处理表格化的结构化数据,把字典展开后才能最大化利用它的矢量化运算、索引、分组等功能,后续代码的可读性和维护性也会高很多。

如果你暂时没时间深入研究,优先选展开成列的方式准没错,后续真有特殊需求再调整也不迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:17:32