pyspark做透视表


了解到  pivot()函数可以实现

尝试一:

df = spark.sql("""
sql语句
""")
df.show()

  

 这里我想要(以下是通过excel表格的透视表实现的)

 

 如何用pyspark实现?

df.pivot(index="avatar",columns="play_date",values="player_count")

 但是报错

 原因分析:

      通过 df = spark.sql("sql语句"),获取的dataframe和pandas中的dataframe不同,我测试了pandas中dataframe的属性

也就只有  df.dtypes;              df.columns;                  df.show();                              df.head()

 

尝试二:

df.pivot_table(index="avatar",columns="play_date",values="player_count")

  仍然报同样的错误

 

尝试三:

解决方案:

查看spark.sql的文档,查找pivot()函数

 现在尝试语句:

df.groupBy("avatar").pivot("play_date").sum("player_count").show() # 可以实现透视表

  df.groupBy("index").pivot("columns").sum("values")

正确

以上需要确认 index, column 和 values的定义。

 

 

尝试四:

上述实验表明,通过 df = spark.sql("sql语句"),获取的dataframe和pandas中的dataframe不同

这个时候尝试将df做个转换

df.toPandas().pivot(index="avatar",columns="play_date",values="player_count").show()

  

pandas_df = df.toPandas()
ts_df = pandas_df.pivot(index="avatar",columns="play_date",values="player_count")
ts_df.show()   #没有show属性
ts_df.collect() # 没有collect属性

  均报错,尚不能解决!

 

主要原因是pandas.dataframe没有 .show()或者 .collect()的属性

 

如果用  .head()显示则可

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM