При сравнении двух наборов данных можно установить ограничение, что они должны иметь одинаковую подпись, т. Е. Одинаковый набор столбцов и одинаковый порядок столбцов.
Тогда у вас должны быть объединяющие столбцы в виде списка (jc_list)
Затем вы можете перейти, как показано ниже, чтобы получить желаемый результат:
jc_list1_df = bdf.select (jc_list)
jc_list2_df = cdf.select (jc_list)
Затем вы можете сравнить их и создать желаемый результат.
delete_jc_df = jc_list1_df.except (jc_list2_df) --- удаленные записи
new_jc_df = jc_list2_df.except (jc_list1_df) --- новые записи
Затем вы можете объединить эти соединяющиеся столбцы с фактическими наборами данных, чтобы получить все остальные столбцы.
delete_df = delete_jc_df.join (BDF, jc_list, "внутренний")
insert_df = insert_jc_df.join (CDF, jc_list, "внутренний")
Теперь, если вы хотите найти обновленные записи, вы можете пересечь jc_list1 и jc_list2
jc_list_common = jc_list1.intersect (jc_list2)
теперь вы получаете все остальные столбцы из cdf, используя эти наборы,
* * 1 022 common_df = cdf.join (jc_list_common, jc_list, "внутренний") * +1023 *
теперь вы можете выполнить операцию минус между common_df и bdf, чтобы получить только обновленный набор,
update_df = common_df.minus (bdf) --- вуаля