You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark数据集转置求教:不用Pandas实现指定行列转换

PySpark实现数据集转置(不依赖Pandas)

原始数据集

+-----------+-----------+                                                        
|weekend_day|totals     |
+-----------+-----------+
| 2023-02-25|  401943676|
| 2023-03-11|  410220150|
+-----------+-----------+

期望输出

-----------------------------------
|        | 2023-02-25 | 2023-03-11 |
| totals | 401943676  | 410220150  |

解决方案

你之前用pivot未得到预期结果,核心原因是缺少固定的分组标识列。可以通过以下步骤实现转置:

  1. 添加固定行标识列:给原始数据新增一列(比如命名为row_key),值固定为'totals',作为转置后的行标签。
  2. 执行pivot聚合:基于新增的标识列分组,以weekend_day作为pivot的列,聚合totals字段(每个日期对应唯一值,用first或sum均可)。
  3. 调整列名(可选):把标识列重命名为空字符串,让输出表头完全匹配预期格式。

完整代码示例:

from pyspark.sql import functions as F

# 假设原始DataFrame名为df
# 添加行标识列
df_with_key = df.withColumn("row_key", F.lit("totals"))

# 执行转置操作
transposed_df = df_with_key.groupBy("row_key") \
    .pivot("weekend_day") \
    .agg(F.first("totals"))

# 重命名行标识列,匹配预期格式
transposed_df = transposed_df.withColumnRenamed("row_key", "")

# 查看结果
transposed_df.show()

这段代码可直接输出目标转置结构,全程无需依赖Pandas。

内容的提问来源于stack exchange,提问作者slysid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:03:12