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

如何用Pandas更高效地将DataFrame按key转为嵌套字典?

Pandas高效转换DataFrame为指定格式字典

原始DataFrame

import pandas as pd

df = pd.DataFrame({
    "key": ["a", "b", "b", "c", "c", "c"],
    "var1": [1, 2, 3, 4, 5, 6],
    "var2": ["x", "y", "x", "y", "x", "y"],
})

对应表格:

keyvar1var2
a1x
b2y
b3x
c4y
c5x
c6y

转换需求

将DataFrame转换为以唯一key值为顶级键,其余列(var1和var2)组成记录列表的字典,预期输出:

{
    "a": [{"var1": 1, "var2": "x"}],
    "b": [{"var1": 2, "var2": "y"}, {"var1": 3, "var2": "x"}],
    "c": [{"var1": 4, "var2": "y"}, {"var1": 5, "var2": "x"}, {"var1": 6, "var2": "y"}],
}

现有低效实现

通过循环遍历唯一key值筛选子DataFrame,处理大型数据时速度较慢:

result = {}
for key in df["key"].unique():
    key_df = df[df["key"] == key]
    result[key] = key_df.drop("key", axis=1).to_dict(orient="records")

高效Pandas风格实现

利用groupby分组后结合apply和to_dict(orient='records')实现,这是Pandas原生优化的操作,处理大数据集时性能远优于循环:

result = df.groupby('key').apply(lambda x: x.drop('key', axis=1).to_dict(orient='records')).to_dict()

原理说明

  • groupby('key'):按key列对DataFrame进行分组,Pandas内部会高效处理分组逻辑,避免循环中的重复筛选操作。
  • apply(lambda x: ...):对每个分组的子DataFrame执行转换,去掉key列后转为记录格式的字典列表。
  • to_dict():将分组结果直接转为目标格式的字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:45:02