我需要創建一個 CSV 輸出檔案,列出資料集中的最低價格、最高價格和總行數。預期輸出(CSV 檔案)應具有列名:min_price、max_price 和 total_rows。如何將我擁有的輸出合并到資料框中,然后將其保存為包含這三列的 CSV?
到目前為止,我已經完成了:
df=spark.read.parquet('mydataframe', inferSchema=True)
price=df.select('price')
max=df.agg({'price': 'max'}).show()
min=df.agg({'price': 'min'}).show()
df.count()
uj5u.com熱心網友回復:
似乎是一個簡單的聚合,您不應該拆分它,而只需使用單個資料框操作進行選擇。
result = (
price
.select(
F.min('price').alias('minimum_price'),
F.max('price').alias('maximum_price'),
F.count("*").alias("total_of_rows")
)
)
將結果保存到您想要的任何位置 - 如果您需要將其作為單個 csv 檔案使用coalesce(1)(price.coalesce(1).write.csv("your_path", header=True)
uj5u.com熱心網友回復:
在@Benny Elgazar 指出我的解決方案有很多問題之后,這個答案被修改了。基本上,這是他從下面給出的答案,但只是使用一個例子:
df = spark.createDataFrame(
[(1.40,),
(1.43,),
(1.35,),
(1.38,),
(1.39,)]
,['price',])
然后,使用 collect 創建一個結果資料框
result = (
df
.select(
F.min('price').alias('minimum_price'),
F.max('price').alias('maximum_price'),
F.count("*").alias("total_of_rows")
)
)
result.show()
------------- ------------- -------------
|minimum_price|maximum_price|total_of_rows|
------------- ------------- -------------
| 1.35| 1.43| 5|
------------- ------------- -------------
現在,將結果 df 寫入 csv 檔案:
result.coalesce(1).write.option("header", "true").csv("my_folder/", 'overwrite')
您不能選擇 csv 檔案的名稱。你可以重命名它。檢查這篇文章以獲得一些想法
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441157.html
