簡體   English   中英

在pyspark數據框中的第一個順序位置添加新列

[英]Adding a new column in the first ordinal position in a pyspark dataframe

我有一個像這樣的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          |
+--------------+-------+-------+-------------+

您可以使用select重新排序列。

df = df.select('new_column','col1','col2','col3')
df.show()

您可以使用始終重新排序火花數據幀中的列select ,如圖這篇文章

在這種情況下,您還可以使用selectalias一步實現預期的輸出,如下所示:

df = df.select(lit(0).alias("new_column"), "*")

從邏輯上講,它等效於以下SQL代碼:

SELECT 0 AS new_column, * FROM df
df.select(['new_column', 'col1', 'col2', 'col3'])

您可以使用INSERT函數

    df.insert(0, 'new_column', [data,,,])

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM