Удалить повторяющиеся строки с инвертированными значениями - PullRequest
0 голосов
/ 15 октября 2019

У меня есть следующий фрейм данных:

print(df)


col_1     col_2     
 A           B        
 B           A 
 A           C

Я хотел бы удалить дублированные строки с инвертированными значениями, получив:

print(df_final)


col_1     col_2     
 A           B        
 A           C

Я пытался с .drop_duplicates(subset = ["col_1", "col_2]), но этоне выдает ожидаемый результат.

Ответы [ 3 ]

1 голос
/ 15 октября 2019

Вы можете использовать сортировку по столбцу и удалять дубликаты, чтобы сделать это

df = pd.DataFrame([['A', 'B'], ['B', 'A'], ['A', 'C'], ['C', 'B'], ['B', 'D']], columns=('col_1', 'col_2'))

result = df.loc[pd.DataFrame(np.sort(df, axis=1), index=df.index).drop_duplicates().index]

Результат

col_1 col_2
0     A     B
1     B     A
2     A     C
3     C     B
4     B     D


 col_1 col_2
0     A     B
2     A     C
3     C     B
4     B     D
0 голосов
/ 15 октября 2019

Попробуйте это:

import pandas as pd

df=pd.DataFrame(data={"col_1": ["A", "B", "A"], "col_2": ["B", "A", "C"]})

df["col_3"]=df.apply(lambda x: str(sorted(x.values)), axis=1)

df=df.drop_duplicates("col_3").drop("col_3", axis=1)

print(df)

И вывод:

   col_1 col_2
0     A     B                                               
2     A     C                                               
[Program finished]
0 голосов
/ 15 октября 2019

Попробуйте использовать duplicated:

df[df.duplicated(['col_1'], keep=False)]

Вывод:

  col_1 col_2
0     A     B
2     A     C
...