У меня есть датафрейм, представляющий набор продуктов. Мне нужно найти все дубликаты продуктов в этих продуктах. Если продукты имеют одинаковые product_type
, color
и size
->, они являются дубликатами. Это была бы простая строка df.groupby('product_type','color','size')
, если бы у меня не было проблемы: некоторые значения отсутствуют. Теперь мне нужно найти все возможные группы товаров, которые могут быть дубликатами между собой. Это означает, что некоторые элементы могут появляться в нескольких группах.
Позвольте мне проиллюстрировать:
import pandas as pd
def main():
df = pd.DataFrame({'product_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'product_type': ['shirt', 'shirt', 'shirt', 'shirt', 'shirt', 'hat', 'hat', 'hat', 'hat', 'hat', 'hat', ],
'color': [None, None, None, 'red', 'blue', None, 'blue', 'blue', 'blue', 'red', 'red', ],
'size': [None, 's', 'xl', None, None, 's', None, 's', 'xl', None, 'xl', ],
})
print df
if __name__ == '__main__':
main()
для этого кадра данных:
Мне нужен этот результат - список возможных дублирующих продуктов для каждой возможной группы (возьмите только самые большие супергруппы):
Так, например, давайте возьмем "рубашку" с id=1
этот продукт не имеет цвета или размера, поэтому он может появиться в возможной «группе дубликатов» вместе с рубашкой № 2 (которая имеет размер «s», но не имеет цвета) и рубашкой № 4 (которая имеет цвет «красный», но имеет не имеют размера). Таким образом, эти три рубашки (1,2,4), возможно, являются дубликатами того же цвета "красный" и размера "с".
Я пытался реализовать его, просматривая все возможные комбинации пропущенных значений, но он кажется неправильным и сложным.
Есть ли способ получить желаемый результат?