PySpark DataFrame按指定列透视报错:'GroupedData'无display属性
PySpark透视DataFrame报错:'GroupedData' object has no attribute 'display'
问题场景
我有一个名为df的PySpark DataFrame,需要按ProducingMonth和CLASSIFICATION列进行透视,生成指定格式的输出。编写了以下代码:
pivotDF = df.groupBy("WELL_ID","CLASSIFICATION").pivot("CLASSIFICATION")
尝试展示数据时,抛出错误:'GroupedData' object has no attribute 'display'
错误原因
groupBy().pivot()执行后返回的是GroupedData对象,不是最终可操作的DataFrame,该对象没有display()方法,必须先执行聚合操作(如sum()、count())才能生成可展示的DataFrame。- 分组逻辑不符合透视需求:不能将
CLASSIFICATION同时作为分组列和透视列,且需求中的分组维度ProducingMonth未被加入groupBy。
解决方案
假设你需要聚合的数值列为VALUE,根据需求选择以下写法:
场景1:按ProducingMonth分组,透视CLASSIFICATION
# 按ProducingMonth分组,透视CLASSIFICATION列,聚合VALUE的总和 pivotDF = df.groupBy("ProducingMonth").pivot("CLASSIFICATION").sum("VALUE") # 现在可以正常展示结果 pivotDF.display()
场景2:同时保留WELL_ID维度,按WELL_ID+ProducingMonth分组透视
pivotDF = df.groupBy("WELL_ID", "ProducingMonth").pivot("CLASSIFICATION").sum("VALUE") pivotDF.display()
内容的提问来源于stack exchange,提问作者code_bug
相关产品推荐
相关产品推荐

