如何在Pyspark中将两列数据纵向堆叠合并为单列
实现方法
方法1:使用stack函数(推荐,多列堆叠时更简洁)
这是PySpark内置的行列转换函数,专门用于多列纵向堆叠的场景,参数中第一个数字代表要堆叠的列数量,后面依次传入要堆叠的列名即可:
from pyspark.sql.functions import expr # 2代表堆叠2列,后面依次传入要合并的两列,别名all_names是最终的单列名 stacked_df = df2.select(expr("stack(2, Name, Lots_of_names) as all_names")) # 验证输出行数 print(stacked_df.count()) # 输出10 stacked_df.show()
方法2:使用union拼接(逻辑直观,适合列数少的场景)
分别提取两列转为相同列名后,再纵向拼接:
from pyspark.sql.functions import col # 分别取两列,统一列名后拼接 name_col = df2.select(col("Name").alias("all_names")) lots_col = df2.select(col("Lots_of_names").alias("all_names")) stacked_df = name_col.union(lots_col) # 验证输出 print(stacked_df.count()) # 输出10
内容的提问来源于stack exchange,提问作者Droid-Bird
相关产品推荐
相关产品推荐

