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

如何将含pyspark.sql.types.Row的字典转换为userid列表?

提取PySpark Row列表中的userid值

嘿,这事儿其实挺容易搞定的,给你两种实用的方法,看你具体的场景来选:

方法一:Python列表推导式(适合已收集到本地的Row列表)

如果你的数据已经是像你给出的那样,是存在字典里的Row对象列表,直接用Python的列表推导式遍历每个Row,提取userid就行——Row对象既支持属性访问,也支持字典式的键访问,两种写法都可以:

# 先定义你的数据源
from pyspark.sql import Row
data = {'ID': [Row(userid=17562323, gross_merchandise_value=6072210944, country=u'ID'), Row(userid=29989283, gross_merchandise_value=4931252224, country=u'ID')]}

# 方式1:属性访问
userid_list = [row.userid for row in data['ID']]
# 方式2:字典式访问(和属性访问效果一致)
userid_list = [row['userid'] for row in data['ID']]

print(userid_list)  # 输出结果: [17562323, 29989283]

方法二:Spark原生API(适合大数据量,不想收集到Driver端)

如果你的数据还在Spark DataFrame里,还没调用collect()拿到本地的Row列表,那推荐用Spark的内置函数处理,避免把大量数据拉到Driver端造成内存压力:

from pyspark.sql.functions import collect_list

# 假设df是包含userid列的原始DataFrame
# 先聚合所有userid到一个列表里
userid_agg_df = df.select(collect_list("userid").alias("userid_list"))
# 再收集结果到本地
userid_list = userid_agg_df.collect()[0]['userid_list']

两种方法都能得到你想要的结果,根据你的实际数据场景选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:36:37