Как добавить несколько пустых столбцов в PySpark Dataframe в определенных местах - PullRequest
0 голосов
/ 27 марта 2019

Я много раз пытался исследовать это, но не могу найти способ выполнить и добавить несколько столбцов в фрейм данных PySpark на определенных позициях.

У меня есть датафрейм, который выглядит так:

Customer_id   First_Name   Last_Name  

Я хочу добавить 3 пустых столбца в 3 разных положениях, и мой окончательный результирующий кадр данных должен выглядеть следующим образом:

Customer_id Address First_Name Email_address Last_Name Phone_no

Есть ли простой способ обойти это, например, как вы можете сделать с reindex на python?

1 Ответ

1 голос
/ 27 марта 2019
# Creating a DataFrame.
from pyspark.sql.functions import col, lit
df = sqlContext.createDataFrame(
    [('1','Moritz','Schulz'),('2','Sandra','Schröder')],
     ('Customer_id','First_Name','Last_Name')
)
df.show()
+-----------+----------+---------+
|Customer_id|First_Name|Last_Name|
+-----------+----------+---------+
|          1|    Moritz|   Schulz|
|          2|    Sandra| Schröder|
+-----------+----------+---------+

Вы можете использовать функцию lit () для добавления пустых столбцов, а после создания вы можете использовать SQL select, чтобы упорядочить столбцы в нужном вам порядке.

df = df.withColumn('Address',lit(''))\
       .withColumn('Email_address',lit(''))\
       .withColumn('Phone_no',lit(''))\
       .select( 
           'Customer_id', 'Address', 'First_Name',
           'Email_address', 'Last_Name', 'Phone_no'
       )
df.show()
+-----------+-------+----------+-------------+---------+--------+
|Customer_id|Address|First_Name|Email_address|Last_Name|Phone_no|
+-----------+-------+----------+-------------+---------+--------+
|          1|       |    Moritz|             |   Schulz|        |
|          2|       |    Sandra|             | Schröder|        |
+-----------+-------+----------+-------------+---------+--------+

Как предлагает пользователь @Pault, более лаконичный и лаконичный способ -

df = df.select(
    "Customer_id", lit('').alias("Address"), "First_Name",
    lit("").alias("Email_address"), "Last_Name", lit("").alias("Phone_no")
)
df.show()
+-----------+-------+----------+-------------+---------+--------+
|Customer_id|Address|First_Name|Email_address|Last_Name|Phone_no|
+-----------+-------+----------+-------------+---------+--------+
|          1|       |    Moritz|             |   Schulz|        |
|          2|       |    Sandra|             | Schröder|        |
+-----------+-------+----------+-------------+---------+--------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...