删除重复的行并取反值

时间:2019-10-15 16:12:44

标签: pandas dataframe drop-duplicates

我有以下数据框:

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 个答案:

答案 0 :(得分:1)

您可以使用“按列排序”并删除重复项来实现

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

答案 1 :(得分:0)

尝试使用duplicated

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

输出:

  col_1 col_2
0     A     B
2     A     C

答案 2 :(得分:0)

尝试一下:

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]