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

Posted

技术标签:

【中文标题】如何在数据框的开头移动 pyspark 数据框的特定列【英文标题】:How to move a specific column of a pyspark dataframe in the start of the dataframe 【发布时间】:2019-11-29 13:53:47 【问题描述】:

我有一个 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,.......

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

【问题讨论】:

Python/pyspark data frame rearrange columns的可能重复 但我不想列出所有列名。在此示例中,有三列,但在我的实际情况中,有 1O0 列,我只想获取具有固定标题的最后一列并将其移动到开头 【参考方案1】:

如果您不想列出数据框的所有列,可以使用数据框属性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|
+---+---+-------+

【讨论】:

columns 的链接无效,我想你的意思是这个链接:spark.apache.org/docs/3.1.1/api/python/reference/api/… @Cecilia:可悲的是,databricks 人员移动了 pyspark 文档并销毁了所有链接。感谢您的提示!

以上是关于如何在数据框的开头移动 pyspark 数据框的特定列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark 中加入带有熊猫数据框的配置单元表?

如何在pyspark中使用具有相同客户ID的新数据框的值更新一行旧数据框

如何从 pyspark 数据框的模式属性(来自镶木地板文件)中获取特定字段名称的数据类型?

如何根据 PySpark 数据框的另一列中的值修改列? F.当边缘情况

如何在数据框的开头插入列向量? [复制]

pyspark:在数据框的每一列中获取唯一项目