PySpark:将行数添加至DataFrame左上角的行列位置
PySpark DataFrame添加行数至左上角的解决方案
实现步骤
- 计算原DataFrame的总行数并保存
- 构造仅含行数的临时DataFrame:
row_count列赋值为总行数,其余原列设为null - 给原DataFrame新增全为
null的row_count列 - 合并临时DataFrame与原DataFrame,调整列顺序确保
row_count在最左侧
代码示例
假设原DataFrame名为df,代码如下:
from pyspark.sql.functions import lit # 1. 获取原DataFrame行数 row_num = df.count() # 2. 构造包含行数的临时行 temp_columns = ["row_count"] + df.columns temp_df = spark.createDataFrame([(row_num,) + (None,) * len(df.columns)], schema=temp_columns) # 3. 给原DataFrame添加空的row_count列 df_with_empty_col = df.withColumn("row_count", lit(None)) # 4. 合并并调整列顺序 final_df = temp_df.unionByName(df_with_empty_col.select(temp_columns)) # 查看结果 final_df.show()
关键说明
unionByName保证列名匹配,避免列顺序问题导致数据错位(None,) * len(df.columns)快速生成对应数量的null值,适配任意列数的原DataFrameselect(temp_columns)强制对齐列顺序,确保合并后结构符合预期
内容的提问来源于stack exchange,提问作者drymolasses
相关产品推荐
相关产品推荐

