Я могу придумать два способа.
df = pd.DataFrame({"UserName_x":["A","B","A","C"],
"UserName_y":["B","A","C","A"],
"edge":["AB","BA","AC","CA"]})
Метод 1 : отсортировать строку edge
по алфавиту и drop_duplicates
:
df["sorted"] = df["edge"].apply(lambda x: ''.join(sorted(x)))
print (df.drop_duplicates(subset="sorted"))
#
UserName_x UserName_y edge sorted
0 A B AB AB
2 A C AC AC
Метод 2 : сначала создайте продукт пользователей без дубликатов и проверьте с помощью isin
:
from itertools import combinations_with_replacement
unique = df["UserName_x"].unique().tolist()
combos = ["".join(i) for i in combinations_with_replacement(unique,2)]
print (df[df["edge"].isin(combos)])
#
UserName_x UserName_y edge sorted
0 A B AB AB
2 A C AC AC