如何在PySpark中将describe()输出的列转行为指定宽表格式
PySpark describe结果行列转置解决方案
方法1:对已生成的describe结果转置
如果已经拿到了行式的describe统计结果,可以直接用pivot方法做行列转换,代码如下:
from pyspark.sql import functions as F # 假设df_describe是你调用.describe()得到的结果DataFrame df_result = df_describe.groupBy().pivot("_c0").agg(F.first("_c1")) # 打印查看结果 df_result.show()
方法2:调用统计函数时直接生成目标格式(更高效)
不需要依赖.describe()方法,直接用聚合函数一次性生成列式统计结果,省去后续转置步骤,适合单字段统计场景:
from pyspark.sql import functions as F # 替换col为你需要统计的目标字段名,df为原始数据集 df_stat = df.agg( F.count("col").alias("count"), F.mean("col").alias("mean"), F.stddev("col").alias("stddev"), F.min("col").alias("min"), F.max("col").alias("max") ) # 直接输出你需要的格式 df_stat.show()
说明:.describe()方法默认返回行式结构是为了兼容多字段同时统计的场景,如果是多字段统计需要转置,在方法1的基础上调整pivot逻辑即可。
内容的提问来源于stack exchange,提问作者powpow
相关产品推荐
相关产品推荐

