Я изучаю Python / Pandas с DataFrame, имеющим следующую структуру:
import pandas as pd
df = pd.DataFrame({"cus_id" : ["2370", "2370", "5100", "5100", "8450", "8450", "1630", "1630", "1630"],
"cus_group" : ["A", "A", "A", "B", "B", "B", "A", "A", "B"]})
print(df)
cus_id cus_group
0 2370 A
1 2370 A
2 5100 A
3 5100 B
4 8450 B
5 8450 B
6 1630 A
7 1630 A
8 1630 B
Моя цель - отфильтровать строки вышеупомянутого DataFrame.В частности, я хочу сохранить только те строки, в которых клиент принадлежит к разным группам.Вот моя попытка:
print(df.drop_duplicates(subset = ["cus_id", "cus_group"], keep = False))
cus_id cus_group
2 5100 A
3 5100 B
8 1630 B
К сожалению, это не тот вывод, который я ищу.Обратите внимание, что cus_id
= 1630
появляются три раза в исходном кадре данных: два раза в группе A
и один раз в группе B
.Поскольку он принадлежит двум разным группам (A
и B
), я не хочу отбрасывать какие-либо строки для этого клиента.То есть вывод, который я ищу, следующий:
cus_id cus_group
2 5100 A
3 5100 B
6 1630 A
7 1630 A
8 1630 B
Я не уверен, какие функции мне не хватает для достижения моей цели.Любая дополнительная помощь будет оценена.