如何根据列表按特定顺序对 pyspark 中的列进行排序?

How to order columns in pyspark in a specific sequence based on a list?

我在 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| 

谢谢!

你从丢弃发射的开始发射点开始订购

你的例子:

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|
+----------+------+--------+------+--------+-----------+------+

尝试 select 使用列表。在这种情况下,在列表的开头插入日期

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|
+----------+------+--------+------+--------+-----------+------+