Как подсчитать количество уникальных пар?
Есть DataFrame, который состоит из двух столбцов: Имя, Номер заказа.
| Имя | Номер заказа |
|---|---|
| Вася | 123 |
| Петя | 254 |
| Вася | 123 |
| Петя | 678 |
Как в таком DataFrame можно грамотно посчитать кол-во таких заказов, для которых повторяется одно имя 2 и более раз?
Т.е., если смотреть на пример, то у Васи два заказа с одинаковым номером, мы их засчитаем как один. А у Пети два заказа с разными номерами, мы их не считаем совсем.
Если есть красивый способ с Pandas, было бы здорово. Либо же какая-то формула в Excel?
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Если я правильно понял вопрос, то при исходных:
name order
0 Вася 123
1 Петя 254
2 Вася 123
3 Петя 678
можно попробовать так:
res = df.groupby("name", as_index=False).apply(lambda x: x[x.duplicated("order")].drop_duplicates()).set_index("name")
тогда res будет:
order
name
Вася 123
Автор решения: MaxU
→ Ссылка
Чтобы посчитать количество уникальных пар:
res = df.groupby(["name", "order"]).size().reset_index(name="count")
результат:
In [60]: res
Out[60]:
name order count
0 Вася 123 2
1 Петя 254 1
2 Петя 678 1
дальше это можно отфильтровать так как вам необходимо:
In [62]: res.query("count > 1")
Out[62]:
name order count
0 Вася 123 2