как вы можете видеть ниже, некоторые строки одинаковы, за исключением того, что значение в столбце NUM1 и значение в столбце NUM2 поменяны местами. Мне нужен только один из них.
Удаление строк на основе последних трех столбцов не является правильным ответом, поскольку таблица может содержать другие записи с теми же датами и используемым значением столбца, но с разными NUM1 и NUM2.
NUM1 NUM2 DATE1 DATE2 USED
0 4 7 10. 9. 2002 16. 11. 2002 5,3
1 7 4 10. 9. 2002 16. 11. 2002 5,3
2 9 10 10. 9. 2002 16. 11. 2002 3,1
3 10 9 10. 9. 2002 16. 11. 2002 3,1
Новая таблица должна выглядеть так:
NUM1 NUM2 DATE1 DATE2 USED
0 4 7 10. 9. 2002 16. 11. 2002 5,3
1 9 10 10. 9. 2002 16. 11. 2002 3,1
Спасибо за помощь!
Неважно, мне просто нужен один из них.
Возможно, вы можете взять копию столбцов и отсортировать их, а затем проверить наличие дубликатов:
x = df[['NUM1', 'NUM2']].copy()
x[:] = np.sort(x, axis=1)
filtered_df = df[~x.duplicated()]
Выход:
>>> filtered_df
NUM1 NUM2 DATE1 DATE2 USED
0 4 7 10.9.2002 16.11.2002 5,3
2 9 10 10.9.2002 16.11.2002 3,1
Попробуйте с frozenset
out = df[~df.apply(frozenset,1).duplicated()]
Out[906]:
NUM1 NUM2 DATE1 DATE2 USED
0 4 7 10.9.2002 16.11.2002 5,3
2 9 10 10.9.2002 16.11.2002 3,1
Круто, это хороший однострочный! Но он не векторизован... мой примерно на 400 мкс быстрее.
Как определить, какую строку оставить?