У меня есть два фрейма данных в 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