Допустим, у меня есть следующая таблица:
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars
1 | A | V | F | 10
2 | A | W | G | 20
3 | B | W | H | 30
4 | B | X | I | 40
5 | C | Y | F | 50
6 | C | Z | J | 60
7 | D | L | P | 70
Если я попытаюсь использовать функцию pd.merge для Match_criteria_1, Match_criteria_2 и Match_criteria_3, я получу 7 отдельных групп / разделов.
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars | Total_Dollars
1 | A | V | F | 10 | 10
2 | A | W | G | 20 | 20
3 | B | W | H | 30 | 30
4 | B | X | I | 40 | 40
5 | C | Y | F | 50 | 50
6 | C | Z | J | 60 | 60
7 | D | L | P | 70 | 70
Как видите, ни одна из записей не имеет одинаковые Match_criteria_1, Match_criteria_2 и Match_criteria_3.
Но что, если я захочу сгруппировать записи с одинаковыми Match_criteria_1, Match_criteria_2 ИЛИ Match_criteria_3?
Итак, используя мой пример, запись 1 соответствует записи 2 из-за Match_criteria_1, запись 2 соответствует записи 3 из-за Match_criteria_2, запись 3 соответствует записи 4 из-заMatch_criteria_1, запись 5 совпадает с записью 1 из-за Match_Criteria_3, а запись 6 сопоставляется с записью 5 из-за Match_criteria 1 (так что происходит переходное свойство).Тогда желаемый результат:
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars | Total_Dollars
1 | A | V | F | 10 | 210
2 | A | W | G | 20 | 210
3 | B | W | H | 30 | 210
4 | B | X | I | 40 | 210
5 | C | Y | F | 50 | 210
6 | C | Z | J | 60 | 210
7 | D | L | P | 70 | 70
, где Total_dollars - сумма каждой записи, которая соответствует транзитивности.Таким образом, записи 1 и 6 могут не иметь общих критериев соответствия, но они по-прежнему сгруппированы вместе, поскольку обе они совпадают с записью 5. Это исключает запись 7, поскольку она не соответствует ни одной из других записей, основанных на любом из трех критериев..