了解到 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()顯示則可