如何更改pyspark数据框中列的顺序?

Posted

技术标签:

【中文标题】如何更改pyspark数据框中列的顺序?【英文标题】:How to change the order of columns in pyspark dataframe? 【发布时间】:2017-09-21 09:17:57 【问题描述】:

我有包含监督数据的 pyspark 数据框。在我的数据框中,标签属性可以出现在任何位置。我想将标签属性移动到数据框中的最后一个。例如,假设我的数据框中的属性存在 ['age','gender','defaulter','salary','occupation']。在这个'defaulter'中是标签属性。我想最后移动这个属性,以便我的数据框包含按此顺序['age','gender','salary','occupation','defaulter']的列。我想这样做是因为当我想在这些数据中应用逻辑回归等 ML 算法时,我必须将其转换为 RDD 并提取最后一个值(或第一个值)作为标签点(https://github.com/apache/spark/blob/master/examples/src/main/python/mllib/logistic_regression.py)。

【问题讨论】:

Python Pandas - Re-ordering columns in a dataframe based on column name的可能重复 【参考方案1】:

如果您在 Dataframe 上运行 ML 算法,请考虑使用 VectorAssembler 创建特征数组。像这样:

assembler = VectorAssembler(
    inputCols= ['age','gender','salary','occupation'],
    outputCol="features")

input_rdd = assembler.transform(dataframe) \
    .map(lambda row: LabeledPoint(row.defaulter, row.features))

【讨论】:

以上是关于如何更改pyspark数据框中列的顺序?的主要内容,如果未能解决你的问题,请参考以下文章

报告pyspark数据框中列的前3个最大值[重复]

更改数据框中列的元素并合并列

我可以更改 Spark 数据框中列的可空性吗?

如何选择数据框中列的前 3 个值 - 熊猫

如何遍历大型 Pyspark Dataframe 中列的不同值? .distinct().collect() 引发大任务警告

动态填充pyspark数据框中列中的行