лучший способ выделить все столбцы и объединить их во фреймы данных pyspark - PullRequest
0 голосов
/ 18 мая 2018

У меня есть два фрейма данных в pyspark.Их схемы ниже

df1 
DataFrame[customer_id: int, email: string, city: string, state: string, postal_code: string, serial_number: string]

df2 
DataFrame[serial_number: string, model_name: string, mac_address: string]

Теперь я хочу сделать full outer join для этих двух фреймов данных, используя coalesce для столбца, общего в обоих data frames.

Iсделали как ниже.Я получил ожидаемый результат.

full_df = df1.join(df2, df1.serial_number == df2.serial_number, 'full_outer').select(df1.customer_id, df1.email, df1.city, df1.state, df1.postal_code,  f.coalesce(df1.serial_number, df2.serial_number).alias('serial_number'), df2.model_name, df2.mac_address)

Теперь я хочу сделать вышеперечисленное немного по-другому.Вместо того чтобы писать все имена столбцов рядом с select в операторе соединения, я хочу сделать что-то вроде использования * на data frame.В основном я хочу что-то вроде ниже.

full_df = df1.join(df2, df1.serial_number == df2.serial_number, 'full_outer').select('df1.*', f.coalesce(df1.serial_number, df2.serial_number).alias('serial_number1'), df2.model_name, df2.mac_address).drop('serial_number')

Я получаю то, что хочу.Есть ли лучший способ для такой операции в pyspark

edit

Это не дубликат https://stackoverflow.com/questions/36132322/join-two-data-frames-select-all-columns-from-one-and-some-columns-from-the-othe?rq=1 Я использую coalesce взаявление о присоединении.Я хочу знать, есть ли способ, где мы можем исключить столбец, в котором я использую функцию coalesce

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете сделать что-то вроде этого:

(df1
    .join(df2, df1.serial_number == df2.serial_number, 'full_outer')
    .select(
        [df1[c] for c in df1.columns if c != 'serial_number'] + 
        [f.coalesce(df1.serial_number, df2.serial_number)]
    ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...