list - 使用从 df 列派生的列表在 pyspark 中有效地创建字典
问题描述
我使用 pandas 数据框在 python 中创建了这个函数,我也想在 spark 中使用它。
我用这个功能做的是:
- 将 df 列转换为列表( t1 )
- 将列的唯一值转换为列表( t2 )
- 为每个特征 (t) 的每个唯一值创建一个列表。当 t1 中存在唯一值时,此列表取值为 1,否则为 0。最后,结果是一个字典,其中每个特征的唯一值作为键,作为参数的列表,当键(唯一值)出现时值为 1,否则为 0。
feat_list 只是一个包含所有列名的列表。
def binary_dict(pandas_df, feat_list):
dict_feature = dict()
for col in feat_list:
t1 = pandas_df[col].tolist()
t2 = pandas_df[col].unique().tolist()
for value in t2:
t = []
for i in range (0, len(t1)):
if value == t1[i]:
t.append(1)
else:
t.append(0)
cc = str(col)
vv = "_" + str(value)
cv = cc + vv
dict_feature[cv] = t
return dict_feature
我尝试使用
t1 = df.select("col_name").rdd.flatMap(list).collect()
用于创建 t1 但为单个列创建列表需要 20 多分钟。我得到了大约 100 列。有没有办法将此功能转换为有效地激发火花?
谢谢大家的回答!
PS:我正在使用 azure/microsoft、Python 3.8 和 pyspark 3.1 的突触分析。
解决方案
推荐阅读
- flutter - 无法以可靠的 null 安全性运行,因为以下依赖项不支持 null 安全性
- python - 无法使用基于 python 的库 ftplib 连接到本地 FTP 服务器
- java - 无法连接到 postgres Scala slick org.postgresql.util.PSQLException:连接尝试失败
- javascript - 如何使用 html-webpack-plugin 在我的 webpack 模板 html 中包含脚本标签
- c# - 从给定键和值的字典数组中获取字典的索引
- azure-active-directory - Microsoft Graph - 如何为用户扩展属性“过滤”
- python - 使用 LCG 方法生成随机数
- flutter - 构建模块“nanopb”时无法构建 iOS 应用程序
- rest - 谁能理解我的托管heroku问题
- sql - 在 oracle 中同时执行 when 和 else 部分时执行 case