Изменить значения столбца Pyspark Dataframe - PullRequest
0 голосов
/ 12 марта 2020

Как обновить все значения в столбце фрейма данных pyspark?

На моем фрейме данных есть следующие данные. Я хочу добавить '0' перед значениями в столбце "почтовый индекс".

+-------+----+-----------+
|address|state|zip code  |
+-------+-----+----------+
|  A    |  s1 |  0215    |
|  D    |  s2 |  5468    |
|  B    |  s3 |  4789    |
|  E    |  s4 |  5102    |
|  C    |  s5 |  9563    |
+-------+----+-----------+

Результат будет выглядеть как

+-------+----+-----------+
|address|state|zip code  |
+-------+-----+----------+
|  A    |  s1 | 00215    |
|  D    |  s2 | 05468    |
|  B    |  s3 | 04789    |
|  E    |  s4 | 05102    |
|  C    |  s5 | 09563    |
+-------+-----+----------+

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Вы можете использовать lpad, если почтовый индекс имеет другой размер.

df.show(false)
// +-------+-----+-------+
// |address|state|zipcode|
// +-------+-----+-------+
// |A      |s1   |215    | <-- a bit different example.
// |D      |s2   |5468   |
// |B      |s3   |4789   |
// |E      |s4   |5102   |
// |C      |s5   |9563   |
// +-------+-----+-------+

df.withColumn("zipcode", lpad(col("zipcode"), 5, "0")).show(false)

Результат:

+-------+-----+-------+
|address|state|zipcode|
+-------+-----+-------+
|A      |s1   |00215  |
|D      |s2   |05468  |
|B      |s3   |04789  |
|E      |s4   |05102  |
|C      |s5   |09563  |
+-------+-----+-------+
0 голосов
/ 12 марта 2020
>>> from pyspark.sql.functions import *
>>> df.withColumn("zipcode", concat(lit(0), col("zipcode"))).show()
+-------+-----+-------+
|address|state|zipcode|
+-------+-----+-------+
|      A|   s1|  00215|
|      D|   s2|  05468|
|      B|   s3|  04789|
|      E|   s4|  05102|
|      C|   s5|  09563|
+-------+-----+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...