我在 Spark 中有一個看起來像這樣的資料框(但有更多行),每個城市都有我網站上的訪問者數量。
| date | New York | Los Angeles | Tokyo | London | Berlin | Paris |
|:----------- |:--------:| -----------:|------:|-------:|-------:|------:|
| 2022-01-01 | 150000 | 1589200 | 500120| 120330 |95058331|980000 |
我想根據這個城市串列對列進行排序(它們是根據它們對我的重要性排序的)
order = ["Paris", "Berlin", "London", "New York", "Los Angeles", "Tokyo"]
最后,我需要一個這樣的資料框。有什么方法可以創建一個在我需要時執行此排序的函式?預期結果如下:
| date | Paris | Berlin | London | New York | Los Angeles | Tokyo |
|:----------- |:--------:| -------:|-------:|---------:|------------:|------:|
| 2022-01-01 | 980000 | 95058331| 120330 | 150000 | 1589200 | 500120|
謝謝!
uj5u.com熱心網友回復:
嘗試使用串列選擇。在這種情況下,在串列的開頭插入日期
order[0:0] =['date']
df_exemple.select(order).show()
---------- ------ -------- ------ -------- ----------- ------
| date| Paris| Berlin|London|New York|Los Angeles| Tokyo|
---------- ------ -------- ------ -------- ----------- ------
|2022-01-01|980000|95058331|120330| 150000 | 1589200|500120|
---------- ------ -------- ------ -------- ----------- ------
uj5u.com熱心網友回復:
你的例子:
df_exemple = spark.createDataFrame(
[
('2022-01-01','150000 ','1589200','500120','120330','95058331','980000')
], ['date', 'New York', 'Los Angeles', 'Tokyo', 'London', 'Berlin', 'Paris'])
order = ['Paris', 'Berlin', 'London', 'New York', 'Los Angeles', 'Tokyo']
現在,一個簡單的重新排序函式:
def order_func(df, order_list):
return df.select('date', *order_list)
result_df = order_func(df_exemple, order)
result_df.show()
---------- ------ -------- ------ -------- ----------- ------
| date| Paris| Berlin|London|New York|Los Angeles| Tokyo|
---------- ------ -------- ------ -------- ----------- ------
|2022-01-01|980000|95058331|120330| 150000 | 1589200|500120|
---------- ------ -------- ------ -------- ----------- ------
uj5u.com熱心網友回復:
您從丟棄發射的起始發射點訂購它
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433582.html
下一篇:合并重復但不是全部
