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