Как повторно использовать фрейм данных в соединении

#python #pyspark

Вопрос:

Возможно, это действительно смелый вопрос, но как можно было бы повторно использовать фрейм данных в соединении?

Например, допустим, у меня есть следующий сценарий:

 df.join(df1, df.product_type == df1.id, "left")  .join(df1, df.deal_type == df1.id, "left")  

Пожалуйста, обратите внимание, что вышесказанное является частью более крупного скрипта, состоящего из множества функций.

Похоже, что возвращаются только данные из первого соединения. Таким образом, фрейм данных не сохраняется и не используется повторно.

Большое спасибо

Комментарии:

1. Очень трудно ответить на ваш вопрос, не увидев никаких ваших данных. Пожалуйста, предоставьте небольшой образец df1 и покажите, как вы ожидаете, что результат двух соединений будет выглядеть! Пожалуйста, отредактируйте свой вопрос, чтобы показать минимальный воспроизводимый набор, состоящий из образца ввода, ожидаемого вывода, фактического вывода и только соответствующего кода, необходимого для воспроизведения проблемы.

Ответ №1:

Вероятно, где — то в вашем коде есть опечатка. Я попробовал ваши команды на примерах фреймов данных и получил данные из обоих соединений в качестве выходных данных

 data = [(1, 1, 1),  (1, 1, 2),  (1, 2, 2),  (1, 2, 3),  (1, 3, 5)] df = spark.createDataFrame(data, schema=["id", "product_type", "deal_type"])  df1 = spark.createDataFrame([(1, 1), (2, 2), (3, 3)], schema=["id", "just_col"])  df_out = (df  .join(df1, df.product_type == df1.id, "left")  .join(df1, df.deal_type == df1.id, "left"))  

для df как введите описание изображения здесь

и df1 как

введите описание изображения здесь

df_out-это

введите описание изображения здесь