У меня есть набор данных, который содержит несколько столбцов, которые представляют собой список элементов.Я привел пример ниже.Я пытаюсь найти записи, которые имеют элементы в списке со 100% соответствием.Я хотел бы найти те, которые имеют 90% или ниже.
>>> df2 = pd.DataFrame({ 'ID':['1', '2', '3', '4', '5', '6', '7', '8'], 'Productdetailed': [['Phone', 'Watch', 'Pen'], ['Pencil', 'fork', 'Eraser'], ['Apple', 'Mango', 'Orange'], ['Something', 'Nothing', 'Everything'], ['Eraser', 'fork', 'Pencil'], ['Phone', 'Watch', 'Pen'],['Apple', 'Mango'], ['Pen', 'Phone', 'Watch']]})
>>> df2
ID Productdetailed
0 1 [Phone, Watch, Pen]
1 2 [Pencil, fork, Eraser]
2 3 [Apple, Mango, Orange]
3 4 [Something, Nothing, Everything]
4 5 [Eraser, fork, Pencil]
5 6 [Phone, Watch, Pen]
6 7 [Apple, Mango]
7 8 [Pen, Phone, Watch]
Если вы заметили индекс 0 и индекс 7 в df2
, то есть один и тот же набор предметов, но в другом порядке.Где в индексах 0 и 5 есть одинаковые элементы в одинаковом порядке.Я хотел бы считать их обоих совпадением.Я пробовал groupby
и series.isin()
.Я также попробовал пересечение, разделив набор данных на две части, но он завершился неудачно с ошибкой типа.
Сначала я хотел бы посчитать количество точно совпадающих элементов (количество найденных совпадений строк) вместе с порядковыми номерами строк.это соответствует.Но когда есть элементы, которые имеют только частичное совпадение, например, индекс 2 и индекс 6 в df2.Я хотел бы сказать, процент элементов, которые соответствуют и с какими номерами столбцов.
Я упоминал.Я попытался разбить данные по конкретному значению столбца на две части.Тогда
applied df2['Intersection'] =
[list(set(a).intersection(set(b)))
for a, b in zip(df2_part1.Productdetailed, df2_part2.Productdetailed)
]
, где a
и b
- это столбец Productdetailed
из обломков df2_part1
и df2_part2
.
Есть ли способ сделатьэтот?Пожалуйста, помогите