Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark:根据其他数据帧动态更新数据帧的列位置_Python_Apache Spark_Pyspark_Pyspark Sql - Fatal编程技术网

Python Pyspark:根据其他数据帧动态更新数据帧的列位置

Python Pyspark:根据其他数据帧动态更新数据帧的列位置,python,apache-spark,pyspark,pyspark-sql,Python,Apache Spark,Pyspark,Pyspark Sql,我有一个经常改变栏目位置的要求。我没有更改代码,而是创建了一个临时数据框Index\u df。在这里,我将更新列位置,它应该反映实际的数据帧,在该数据帧上应该执行更改 样本 F_cDc,F_NHY,F_XUI,F_NMY,P_cDc,P_NHY,P_XUI,P_NMY 415 258 854 245 478 278 874 235 405 197 234 456 567 188 108 267 315 458 054 37

我有一个经常改变栏目位置的要求。我没有更改代码,而是创建了一个临时数据框
Index\u df
。在这里,我将更新列位置,它应该反映实际的数据帧,在该数据帧上应该执行更改

样本

F_cDc,F_NHY,F_XUI,F_NMY,P_cDc,P_NHY,P_XUI,P_NMY
415    258   854   245   478   278   874   235
405    197   234   456   567   188   108   267
315    458   054   375   898   978   677   134
指数

   col   position
    F_cDc,1 
    F_NHY,3
    F_XUI,5
    F_NMY,7
    P_cDc,2 
    P_NHY,4
    P_XUI,6
    P_NMY,8
根据
索引_df
样本_df
应该改变

预期产出:

F_cDc,P_cDc,F_NHY,P_NHY,F_XUI,P_XUI,F_NMY,P_NMY
415    478   258   278   854   874   245   235
405    567   197   188   234   108   456   267
315    898   458   978   054   677   375   134
这里,列位置根据我在
Index\u df


我可以做
sample\u df.select(“”)
但我有70多列。从技术上讲,这不是最好的处理方法。

您可以通过
选择
轻松实现这一点

首先,按正确的顺序检索列:

NewColList = Index_df.orderBy("position").select("col").collect()
然后将新订单应用于df

sample_df = sample_df.select(*[i[0] for i in NewColList])

您可以通过
选择
轻松实现这一点

首先,按正确的顺序检索列:

NewColList = Index_df.orderBy("position").select("col").collect()
然后将新订单应用于df

sample_df = sample_df.select(*[i[0] for i in NewColList])

为什么对70列执行select操作会有问题?我看不出有任何限制。你不能在接下来的步骤中这样做吗?您在哪里显示信息?或许,您应该在pyspark步骤之后执行“示意”部分,在该步骤中,您使用或显示数据@Steven BENET:目前我对70列表有上述要求,因为我需要对具有更多列的表执行相同的操作。请为以上帖子提供解决方案。为什么对70列执行select操作是一个问题?我看不出有任何限制。你不能在接下来的步骤中这样做吗?您在哪里显示信息?或许,您应该在pyspark步骤之后执行“示意”部分,在该步骤中,您使用或显示数据@Steven BENET:目前我对70列表有上述要求,因为我需要对具有更多列的表执行相同的操作。请为以上帖子提供解决方案
collect
是否会为您提供
Row
对象?您可以使用
select(“col”).as(String)
collect.map(uu.getAs[String](“col”)
最有效的方法是pyspark。难道
collect
不会给您
对象吗?您可以使用
select(“col”).as(String)
collect.map(uu.getAs[String](“col”)
最有效的方法是pyspark。