преобразовать столбцы из списка столбцов в методе выбора, который прикреплен к методу соединения - PullRequest
1 голос
/ 14 июля 2020

У меня есть два фрейма данных с одинаковой схемой. Я использую метод внешнего соединения для обоих фреймов данных, а также методы select и coalesce для выбора и преобразования всех столбцов. Я хочу перебрать список столбцов в методе выбора без явного определения каждого столбца в методе объединения. Было бы здорово узнать, есть ли решение без использования UDF. Две объединяемые таблицы - это songs и staging_songs в фрагментах кода ниже.

Вместо явного определения каждого столбца следующим образом:


updated_songs = songs.join(staging_songs, songs.song_id == staging_songs.song_id, how='full').select(
    f.coalesce(staging_songs.song_id, songs.song_id),
    f.coalesce(staging_songs.artist_name, songs.artist_name),
    f.coalesce(staging_songs.song_name, songs.song_name)
)

Выполнение каких-либо действий по строкам из:

# column names to iterate over in select method
songs_columns = songs.columns

updated_songs = songs.join(staging_songs, songs.song_id == staging_songs.song_id, how='full').select(
            #using for loop like this raises a syntax error
            for col in songs_columns:
                f.coalesce(staging_songs.col, songs.col))

1 Ответ

2 голосов
/ 14 июля 2020

Попробуйте следующее:

updated_songs = songs.join(staging_songs, songs["song_id"] == staging_songs["song_id"], how='full').select(*[f.coalesce(staging_songs[col], songs[col]).alias(col) for col in songs_columns])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...