如何在数据帧的开头移动 pyspark 数据帧的特定列

How to move a specific column of a pyspark dataframe in the start of the dataframe

我有一个pyspark数据框如下(这只是一个简化的例子,我的实际数据框有数百列):

col1,col2,......,col_with_fix_header
1,2,.......,3
4,5,.......,6
2,3,........,4

我想在开头移动col_with_fix_header,这样输出如下:

col_with_fix_header,col1,col2,............
3,1,2,..........
6,4,5,....
4,2,3,.......

我不想列出解决方案中的所有列。

如果您不想列出数据框的所有列,可以使用数据框 属性 columns。 属性 为您提供了一个 python 列名称列表,您可以简单地将其切片:

df = spark.createDataFrame([
  ("a", "Alice", 34),
  ("b", "Bob", 36),
  ("c", "Charlie", 30),
  ("d", "David", 29),
  ("e", "Esther", 32),
  ("f", "Fanny", 36),
  ("g", "Gabby", 60)], ["id", "name", "age"])
  
df.select([df.columns[-1]] + df.columns[:-1]).show()

输出:

+---+---+-------+
|age| id|   name|
+---+---+-------+
| 34|  a|  Alice|
| 36|  b|    Bob|
| 30|  c|Charlie|
| 29|  d|  David|
| 32|  e| Esther|
| 36|  f|  Fanny|
| 60|  g|  Gabby|
+---+---+-------+