如何将向量列分成两列?

2024-01-29

我使用 PySpark。

Spark ML 的随机森林输出 DataFrame 有一个“概率”列,它是一个具有两个值的向量。我只想向输出 DataFrame 添加两列“prob1”和“prob2”,它们对应于向量中的第一个和第二个值。

我尝试过以下方法:

output2 = output.withColumn('prob1', output.map(lambda r: r['probability'][0]))

但我收到错误“col 应该是 Column”。

关于如何将向量列转换为其值列有什么建议吗?


我根据上面的建议找出了问题所在。在 pyspark 中,“密集向量简单地表示为 NumPy 数组对象”,因此问题出在 python 和 numpy 类型上。需要添加 .item() 将 numpy.float64 转换为 python float。

以下代码有效:

split1_udf = udf(lambda value: value[0].item(), FloatType())
split2_udf = udf(lambda value: value[1].item(), FloatType())

output2 = randomforestoutput.select(split1_udf('probability').alias('c1'), split2_udf('probability').alias('c2'))

或者将这些列附加到原始数据框:

randomforestoutput.withColumn('c1', split1_udf('probability')).withColumn('c2', split2_udf('probability'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将向量列分成两列? 的相关文章

随机推荐