Я сравниваю 2 кадра данных.
Я хочу сравнить их столбец за столбцом
Я создал 2 меньших кадра данных из родительских данных.
на основе столбцов соединения и столбцов сравнения:
Created 1st dataframe:
val df1_subset = df1.select(subset_cols.head, subset_cols.tail: _*)
+----------+---------+-------------+
|first_name|last_name|loyalty_score|
+----------+---------+-------------+
| tom | cruise| 66|
| blake | lively| 66|
| eva| green| 44|
| brad| pitt| 99|
| jason| momoa| 34|
| george | clooney| 67|
| ed| sheeran| 88|
| lionel| messi| 88|
| ryan| reynolds| 45|
| will | smith| 67|
| null| null| |
+----------+---------+-------------+
Created 2nd Dataframe:
val df1_1_subset = df1_1.select(subset_cols.head, subset_cols.tail: _*)
+----------+---------+-------------+
|first_name|last_name|loyalty_score|
+----------+---------+-------------+
| tom | cruise| 34|
| brad| pitt| 78|
| eva| green| 56|
| tom | cruise| 99|
| jason| momoa| 34|
| george | clooney| 67|
| george | clooney| 88|
| lionel| messi| 88|
| ryan| reynolds| 45|
| will | smith| 67|
| kyle| jenner| 56|
| celena| gomez| 2|
+----------+---------+-------------+
Тогда я присоединился к 2 подмножествам
Я присоединился к ним как к полному внешнему соединению, чтобы получить следующее:
val df_subset_joined = df1_subset.join(df1_1_subset, joinColsArray, "full_outer")
Joined Subset
+----------+---------+-------------+-------------+
|first_name|last_name|loyalty_score|loyalty_score|
+----------+---------+-------------+-------------+
| will | smith| 67| 67|
| george | clooney| 67| 67|
| george | clooney| 67| 88|
| blake | lively| 66| null|
| celena| gomez| null| 2|
| eva| green| 44| 56|
| null| null| | null|
| jason| momoa| 34| 34|
| ed| sheeran| 88| null|
| lionel| messi| 88| 88|
| kyle| jenner| null| 56|
| tom | cruise| 66| 34|
| tom | cruise| 66| 99|
| brad| pitt| 99| 78|
| ryan| reynolds| 45| 45|
+----------+---------+-------------+-------------+
Затем я попытался отфильтровать элементы, которые являются одинаковыми в обоих столбцах сравнения (в этом примере loyalty_scores), используя позиции столбцов
df_subset_joined.filter(_c2 != _c3).show
Но это не сработало. Я получаю следующую ошибку:
Error:(174, 33) not found: value _c2
df_subset_joined.filter(_c2 != _c3).show
Какой для меня наиболее эффективный способ получить объединенный фрейм данных, в котором я вижу только те строки, которые не совпадают в столбцах сравнения.
Я бы хотел сохранить эту динамику, чтобы жестко кодировать имена столбцов нельзя.
Спасибо, что помогли мне понять это.