Pyspark: внутреннее соединение двух фреймов данных pyspark и выбор всех столбцов из первого фрейма данных и нескольких столбцов из второго фрейма данных

#pyspark

#pyspark

Вопрос:

У меня есть два фрейма данных pyspark A и B. Я хочу внутреннее объединение двух фреймов данных pyspark и выбор всех столбцов из первого фрейма данных и нескольких столбцов из второго фрейма данных.

 A_df                
id  column1 column2 column3 column4
1   A1  A2  A3  A4
2   A1  A2  A3  A4
3   A1  A2  A3  A4
4   A1  A2  A3  A4
  
 B_df                        
id  column1 column2 column3 column4 column5 column6
1   B1  B2  B3  B4  B5  B6
2   B1  B2  B3  B4  B5  B6
3   B1  B2  B3  B4  B5  B6
4   B1  B2  B3  B4  B5  B6
  
 joined_df                       
id  column1 column2 column3 column4 column5 column6
1   A1  A2  A3  A4  B5  B6
2   A1  A2  A3  A4  B5  B6
3   A1  A2  A3  A4  B5  B6
4   A1  A2  A3  A4  B5  B6
  

Я пытаюсь использовать приведенный ниже код —

 joined_df = (A_df.alias('A_df').join(B_df.alias('B_df'),
                               on = A_df['id'] == B_df['id'],
                               how = 'inner')
                               .select('A_df.*',B_df.column5,B_df.column6))
  

Но это дает странный результат, когда значения в столбцах меняются местами. Как я могу этого добиться? Заранее спасибо

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

1. .select('A_df.*', 'B_df.column5', 'B_df.column6'))

2. Возникает та же проблема. Значения перемешиваются между столбцами

3. если имена столбцов в обеих таблицах совпадают, то это становится неоднозначным. Переименуйте столбец в одной из таблиц и сделайте это. Это сработает.

Ответ №1:

В чем проблема? Все работает, как ожидалось.

 df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")

df1.alias('a').join(df2.alias('b'), ['id'], 'inner') 
   .select('a.*', 'b.column5', 'b.column6').show()

 --- ------- ------- ------- ------- ------- ------- 
| id|column1|column2|column3|column4|column5|column6|
 --- ------- ------- ------- ------- ------- ------- 
|  1|     A1|     A2|     A3|     A4|     B5|     B6|
|  2|     A1|     A2|     A3|     A4|     B5|     B6|
|  3|     A1|     A2|     A3|     A4|     B5|     B6|
|  4|     A1|     A2|     A3|     A4|     B5|     B6|
 --- ------- ------- ------- ------- ------- -------