2016-06-27 2 views
2

Я использую следующий код для соединения двух кадров данных:pyspark: присоединиться к схеме? Или преобразование схемы в список?

new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer') 

Приведенный выше код работает отлично, но иногда df_1 и df_2 сотни столбцов. Возможно ли объединение с использованием схемы вместо ручного добавления всех столбцов? Или есть способ, которым я могу преобразовать схему в список? Большое спасибо!

ответ

2

Вы не можете присоединиться к схеме, если то, что вы имели в виду, было каким-то образом связано с тем, что join включает столбцы типа dtypes. Что вы можете сделать, это извлечь имена столбцов сначала, а затем передать их через как список аргументов для on=, как это:

join_cols = df_1.columns 
df_1.join(df_2, on=join_cols, how='left_outer') 

Теперь, очевидно, придется редактировать содержимое join_cols, чтобы убедиться, что он имеет только имена, которые вы на самом деле хотите присоединиться df_1 и df_2. Но если есть сотни допустимых столбцов, которые, вероятно, намного быстрее, чем добавление их по одному. Вы также можете сделать join_cols пересечением столбцов df_1 и df_2, а затем отредактировать оттуда, если это более подходит.

Редактировать: Хотя я должен добавить, что выпуск Spark 2.0 буквально в любой день теперь, и я еще не разбирался во всех изменениях. Так что, возможно, стоит заглянуть в это, или обеспечить будущее решение.

Смежные вопросы