Pyspark 按顺序排列的列值
我有以下数据帧:Pyspark 按顺序排列的列值,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我有以下数据帧: Ref ° | indice_1 | Indice_2 | rank_1 | rank_2 | echelon_from | section_from | echelon_to | section_to ----------------------------------------------------------------------------------------------------
Ref ° | indice_1 | Indice_2 | rank_1 | rank_2 | echelon_from | section_from | echelon_to | section_to
--------------------------------------------------------------------------------------------------------------------------------------------
70574931 | 19 | 37.1 | 32 | 62 | ["10032,20032"] | ["11/12","13"] | ["40062"] | ["14A"]
---------------------------------------------------------------------------------------------------------------------------------------------
70574931 | 18 | 36 | 32 | 62 | ["20032"] | ["13"] | ["30062,40062"] | ["14,14A"]
我希望连接具有相同参考号的行,将值中的梯形图、值中的截面图、值中的梯形图、值中的截面图和值中的截面图连接到具有重复值的值,如下面的示例所示,并且不接触其余列
Ref ° | Indice_1 | Indice_2 | rank_1 | rank_2 | echelon_from | section_from | echelon_to | section_to
---------------------------------------------------------------------------------------------------------------------------------------------
70574931 | 19 | 37.1 | 32 | 62 | ["10032,20032"] | ["11/12","13"] | ["30062,40062"] | ["14,14A"]
----------------------------------------------------------------------------------------------------------------------------------------------
70574931 | 18 | 36 | 32 | 62 | ["10032,20032"] | ["11/12","13"] | ["30062,40062"] | ["14,14A"]
原始数据帧中的某些列值是重复的,我不应该触摸它们,我应该保留这些值以保持数据帧的相同行号。
有人能帮我吗?我怎么做
谢谢大家! 有多种方法可以做到这一点。一种方法是分解所有给定的列表,并将它们作为一个集合重新收集
从pyspark.sql导入函数为F
列出“从梯队到”concat=[“从梯队”、“从节队”、“从梯队到”、“从节队到”]
columns_not_to_concat=[c代表df中的c.columns如果c不在列表中_to_concat]
对于列表中的c到c:
df=带柱的df(c,F.分解(c))
df=(
df
.groupBy(*列不到列)
阿格先生(
*[F.collect\u set(c).列表中c的别名(c)\u-concat]
)
)
另一种更优雅的方法是使用flant()
从pyspark.sql导入函数为F
列出“从梯队到”concat=[“从梯队”、“从节队”、“从梯队到”、“从节队到”]
对于列表中的c到c:
df=带柱的df(c,F.展平(c))
参考资料:
有多种方法可以做到这一点。一种方法是分解所有给定的列表,并将它们作为一个集合重新收集
从pyspark.sql导入函数为F
列出“从梯队到”concat=[“从梯队”、“从节队”、“从梯队到”、“从节队到”]
columns_not_to_concat=[c代表df中的c.columns如果c不在列表中_to_concat]
对于列表中的c到c:
df=带柱的df(c,F.分解(c))
df=(
df
.groupBy(*列不到列)
阿格先生(
*[F.collect\u set(c).列表中c的别名(c)\u-concat]
)
)
另一种更优雅的方法是使用flant()
从pyspark.sql导入函数为F
列出“从梯队到”concat=[“从梯队”、“从节队”、“从梯队到”、“从节队到”]
对于列表中的c到c:
df=带柱的df(c,F.展平(c))
参考资料:
@Ben.T Ref.,indicate_1,indicate_2,rank_1和rank_2是字符串梯队从,Section_from,Echelon_to和Section_to是@Ben.T Ref.的阵列可能副本,indicate_1,indicate_2,rank_1和rank_2是字符串梯队从,Section_from,electron_to和Section_to是我更新了答案的阵列可能副本。之前的一个不起作用,因为我在一个
.select()
语句中分解了多个列。以上应该有效。我已经更新了答案。之前的一个不起作用,因为我在一个.select()
语句中分解了多个列。上面的方法应该有效。