如何在PySpark中对DataFrame执行pivot透视转换操作
错误原因
groupBy("user_id").pivot("hashtag_id")执行后返回的是GroupedData类型对象,尚未完成聚合计算,没有生成可查询的DataFrame,因此无法直接调用show()方法。
正确实现代码
你需要对分组后的数据指定聚合规则,这里你需要保留原表的count值,直接使用sum("count")聚合即可,额外添加fillna(0)把用户未提及的话题标签的空缺值替换为0,就能得到你需要的输出格式:
# 执行行转列操作 result_df = hashtags_users_joined_grouped_df.groupBy("user_id") \ .pivot("hashtag_id") \ .sum("count") \ .fillna(0) # 重命名列符合你的输出要求 result_df = result_df.withColumnRenamed("user_id", "user") # 查看结果 result_df.show()
代码说明
groupBy("user_id"):按用户ID进行分组pivot("hashtag_id"):将hashtag_id字段的所有唯一值转换为新的列sum("count"):对每组内的count字段求和,因为你的原数据中每组(单个用户+单个话题标签)只有一条记录,求和结果就等于原表的count值fillna(0):将用户没有提及过的话题标签对应的空值替换为0,匹配你需要的输出格式
内容的提问来源于stack exchange,提问作者Mark Johnson
相关产品推荐
相关产品推荐

