在 pyspark 数据框中的第一个序号位置添加一个新列
Posted
技术标签:
【中文标题】在 pyspark 数据框中的第一个序号位置添加一个新列【英文标题】:Adding a new column in the first ordinal position in a pyspark dataframe 【发布时间】:2018-11-16 11:16:16 【问题描述】:我有一个 pyspark 数据框,例如:
+--------+-------+-------+
| col1 | col2 | col3 |
+--------+-------+-------+
| 25 | 01 | 2 |
| 23 | 12 | 5 |
| 11 | 22 | 8 |
+--------+-------+-------+
我想通过添加这样的新列来创建新的数据框:
+--------------+-------+-------+-------+
| new_column | col1 | col2 | col3 |
+--------------+-------+-------+-------+
| 0 | 01 | 2 | 0 |
| 0 | 12 | 5 | 0 |
| 0 | 22 | 8 | 0 |
+--------------+-------+-------+-------+
我知道我可以通过以下方式添加列:
df.withColumn("new_column", lit(0))
但它最后添加了这样的列:
+--------------+-------+-------+-------------+
| col1 | col1 | col2 | new_column |
+--------------+-------+-------+-------------+
| 25 | 01 | 2 | 0 |
| 23 | 12 | 5 | 0 |
| 11 | 22 | 8 | 0 |
+--------------+-------+-------+-------------+
【问题讨论】:
使用 withColumn 和 select('new_column',other columns) 添加。 【参考方案1】:您可以使用 select 重新排序列。
df = df.select('new_column','col1','col2','col3')
df.show()
【讨论】:
【参考方案2】:您始终可以使用 select
对 spark DataFrame 中的列重新排序,如 this post 所示。
在这种情况下,您还可以使用select
和alias
一步实现所需的输出,如下所示:
df = df.select(lit(0).alias("new_column"), "*")
这在逻辑上等价于下面的SQL代码:
SELECT 0 AS new_column, * FROM df
【讨论】:
【参考方案3】:df.select(['new_column', 'col1', 'col2', 'col3'])
【讨论】:
【参考方案4】:您可以使用 INSERT 功能
df.insert(0, 'new_column', [data,,,])
谢谢
【讨论】:
以上是关于在 pyspark 数据框中的第一个序号位置添加一个新列的主要内容,如果未能解决你的问题,请参考以下文章