from itertools import product
import pandas as pd
df = pd.DataFrame.from_records(product(range(10), range(10)))
df = df.sample(90)
df.columns = "c1 c2".split()
df = df.sort_values(df.columns.tolist()).reset_index(drop=True)
# c1 c2
# 0 0 0
# 1 0 1
# 2 0 2
# 3 0 3
# 4 0 4
# .. .. ..
# 85 9 4
# 86 9 5
# 87 9 7
# 88 9 8
# 89 9 9
#
# [90 rows x 2 columns]
Jak szybko znaleźć, zidentyfikować i usunąć ostatni duplikat wszystkich par symetrycznych w tej ramce danych?
Przykładem pary symetrycznej jest to, że „(0, 1)” jest równe „(1, 0)”. Ten ostatni należy usunąć.
Algorytm musi być szybki, dlatego zaleca się użycie numpy. Konwersja na obiekt python jest niedozwolona.
df.drop_duplicates()
symmetric pairs
?