Разделить столбец PySpark Dataframe на несколько - PullRequest
1 голос
/ 11 апреля 2020

У меня есть столбец данных pyspark, в котором есть данные, как показано ниже.

Column 1
A1,A2
B1
C1,C2
D2

Я должен разбить столбец на 2 столбца на основе запятой. Вывод должен быть как ниже.

Column 1    Column 2
A1          A2
            B1
C1          C2
            D2

Я пытался использовать функцию split (), но мои B1 и D2 заполняются в столбце 1, а не в столбце 2. Есть ли способ добиться вышеуказанного вывода?

1 Ответ

4 голосов
/ 11 апреля 2020

Вот один из способов использования split и size :

from pyspark.sql.functions import split, size, col, when

df.withColumn("ar", split(df["Column 1"], ",")) \
  .withColumn("Column 2", when(
                             size(col("ar")) == 1, col("ar")[0])
                             .otherwise(col("ar")[1])) \
  .withColumn("Column 1", when(size(col("ar")) == 2, col("ar")[0])) \
  .drop("ar") \
  .show()

# +--------+--------+
# |Column 1|Column 2|
# +--------+--------+
# |      A1|      A2|
# |    null|      B1|
# |      C1|      C2|
# |    null|      D2|
# +--------+--------+

Сначала мы разделяем Column 1 запятыми, затем мы получаем условный доступ к элементам массива .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...