Я присоединяюсь к двум фреймам данных примерно так:
val joinCols = Array ("first_name", "last_name")
val df_subset_joined = df1_subset.as ("a"). join (df2_subset.as ("b"), joinCols, "full_outer")
df_subset_joined.show ()
Это результат вышеприведенного кода:
Dataframe of differences between 2 dataframes
+----------+---------+-------------+-------------+
|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| null|
+----------+---------+-------------+-------------+
Как видите, есть столбцы с нулевыми значениями.
Я запускаю следующий код:
val filter_str = s"a.$col"+" != "+s"b.$col"
val df_subset_filtered = df_subset_joined.filter(filter_str)
df_subset_filtered.show()
Я получаю следующий фрейм данных:
Below is the dataframe of differences between DF1 and DF1 based on the comparison between:
a.loyalty_score != b.loyalty_score
+----------+---------+-------------+-------------+
|first_name|last_name|loyalty_score|loyalty_score|
+----------+---------+-------------+-------------+
| tom | cruise| 66| 99|
| tom | cruise| 66| 34|
| eva| green| 44| 56|
| brad| pitt| 99| 78|
| george | clooney| 67| 88|
+----------+---------+-------------+-------------+
Почему я не вижу строки с нулевыми значениями в одном столбце и фактическим значением в другом. Разве это не должно удовлетворять значению! = Null
Как я могу заставить свой оператор фильтра отображать нулевые значения в конечном кадре данных