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

PySpark如何按APP维度实现数据框行转列拆分指标?

PySpark 多指标行转列实现方案

你需要的是基于APP字段对DOWNLOADS、ACTIVE_USERS两个指标同时做行转列,直接使用PySpark内置的pivot函数即可实现,完整实现代码如下:

from pyspark.sql import functions as F

# 假设你的原始数据框变量名为 df
# 1. 按分组字段聚合+行转列
pivot_df = df.groupBy("ID", "DATE") \
             .pivot("APP") \
             .agg(
                 F.first("DOWNLOADS").alias("DOWNLOADS"),
                 F.first("ACTIVE_USERS").alias("ACTIVE_USERS")
             )

# 2. 重命名列名,匹配你需要的「APP名 - 指标名」格式
renamed_cols = []
for col_name in pivot_df.columns:
    if col_name in ("ID", "DATE"):
        renamed_cols.append(col_name)
    else:
        app, metric = col_name.split("_", 1)
        renamed_cols.append(F.col(col_name).alias(f"{app} - {metric}"))

result_df = pivot_df.select(renamed_cols).orderBy("ID")

# 输出验证结果
result_df.show(truncate=False)

注意事项

  • 如果你同个DATE+APP组合下存在多条数据,可将agg中的first替换为你需要的聚合函数,比如sum、avg等
  • 若APP数量极大且你只需要固定几个APP,可以给pivot传第二个参数指定APP列表,提高执行效率,示例:.pivot("APP", ["FACEBOOK", "INSTAGRAM"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:39:03