Кажется, вы хотите, чтобы дубликаты определялись на основе неупорядоченного идентификатора, который у Панд не имеет смысла.Например, эти две записи
df = pd.DataFrame([['a', 'b'], ['b', 'a']], columns=['id1', 'id2'])
id1 id2
0 a b
1 b a
будут считаться разными, поскольку они не совпадают на id1
или id2
.Если вы хотите проверить, является ли неупорядоченный набор обоих id
s дубликатом, вы можете сравнить, является ли их минимум и максимум дубликатом.Например, добавив несколько временных столбцов,
df.assign(min_id = lambda x : x[['id1', 'id2']].min(axis=1),
max_id = lambda x : x[['id1', 'id2']].max(axis=1)) \
.drop_duplicates(subset=['min_id', 'max_id']) \
.drop(['min_id', 'max_id'], axis=1)
, что в значительной степени соответствует решению NumPy в вопросе.