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

如何将PySpark DataFrame转换为Python字典列表?

将PySpark DataFrame转换为Python字典列表的方法

嘿,刚接触PySpark的话,这个转换需求其实很好实现~我给你分享两种简单靠谱的方法,完全能得到你想要的字典列表格式:

方法一:使用collect() + Row.asDict()

这是最直接的PySpark原生方法,不需要依赖其他库:

# 假设你的PySpark DataFrame变量名为df
dict_list = [row.asDict() for row in df.collect()]

原理说明:

  • df.collect()会把DataFrame中的所有数据从集群拉取到Driver节点,返回一个Row对象的列表
  • 每个Row对象都有asDict()方法,可以直接把行数据转换成键值对形式的字典
  • 最后用列表推导式把所有Row转成字典,就得到你想要的格式了

⚠️ 注意:如果你的DataFrame数据量很大,collect()会把全部数据加载到Driver的内存里,可能导致内存溢出,这种方法更适合小数据集。

方法二:借助Pandas转换

如果你熟悉Pandas的话,也可以通过中间转成Pandas DataFrame来实现:

dict_list = df.toPandas().to_dict('records')

原理说明:

  • df.toPandas()会把PySpark DataFrame转换成Pandas DataFrame(同样会把数据拉到Driver节点)
  • Pandas的to_dict('records')方法可以直接把DataFrame转换成字典列表,参数'records'表示每行对应一个字典

⚠️ 注意:和第一种方法一样,大数据量场景下要谨慎使用,另外要注意数据类型的转换(比如PySpark的Decimal类型可能会转成Python的float或Decimal对象)。

两种方法最终得到的结果都是你期望的格式:

[{"title":"The Eight Hundred", "imdb_score":7.2, "Worldwide_Gross(dollars)":460699653}, {"title":"Bad Boys for Life", "imdb_score":6.6, "Worldwide_Gross(dollars)":426505244}, {"title":"Tenet", "imdb_score":7.8, "Worldwide_Gross(dollars)":334000000}, {"title":"Sonic the Hedgehog", "imdb_score":6.5, "Worldwide_Gross(dollars)":308439401}, {"title":"Dolittle", "imdb_score":5.6, "Worldwide_Gross(dollars)":245229088}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:53