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

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

Pandas DataFrame转嵌套字典列表的优雅实现

核心思路

利用Pandas内置的apply(按行生成嵌套字典)和to_dict('records')(将DataFrame转为字典列表)方法,避免手动遍历行,实现高效且简洁的格式转换。

示例实现

假设你的DataFrame结构如下:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'Name': ['Alice', 'Bob'],
    'Age': [30, 25],
    'Street': ['123 Main St', '456 Oak Ave'],
    'City': ['New York', 'Los Angeles'],
    'Postcode': ['10001', '90001']
})

步骤1:生成嵌套的Address字段

通过assign方法新增Address列,将指定的地址列按行转为字典:

# 整合地址列为嵌套字典
df_processed = df.assign(
    Address=df[['Street', 'City', 'Postcode']].apply(dict, axis=1)
).drop(columns=['Street', 'City', 'Postcode'])  # 删除原地址列

步骤2:转为目标字典列表

用to_dict('records')将处理后的DataFrame直接转为字典列表:

result = df_processed.to_dict('records')

最终输出的result格式如下:

[
    {'Name': 'Alice', 'Age': 30, 'Address': {'Street': '123 Main St', 'City': 'New York', 'Postcode': '10001'}},
    {'Name': 'Bob', 'Age': 25, 'Address': {'Street': '456 Oak Ave', 'City': 'Los Angeles', 'Postcode': '90001'}}
]

扩展:多组嵌套字段处理

如果需要生成多个嵌套字典(比如同时整合联系信息),只需重复assign逻辑即可:

# 带联系信息的示例数据
df = pd.DataFrame({
    'Name': ['Alice', 'Bob'],
    'Age': [30, 25],
    'Street': ['123 Main St', '456 Oak Ave'],
    'City': ['New York', 'Los Angeles'],
    'Postcode': ['10001', '90001'],
    'Phone': ['555-1234', '555-5678'],
    'Email': ['alice@example.com', 'bob@example.com']
})

# 生成多个嵌套字段
df_multi_nested = df.assign(
    Address=df[['Street', 'City', 'Postcode']].apply(dict, axis=1),
    Contact=df[['Phone', 'Email']].apply(dict, axis=1)
).drop(columns=['Street', 'City', 'Postcode', 'Phone', 'Email'])

result_multi = df_multi_nested.to_dict('records')

为什么不用遍历行?

Pandas的内置方法基于向量化操作,底层用C实现,比Python层面的for循环遍历行效率高得多,尤其是处理大规模数据集时优势明显,同时代码更简洁易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:15