删除具有反转值的重复行
Remove repeated rows with inverted values
我有以下数据框:
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])
但它没有产生预期的输出。
尝试使用 duplicated
:
df[df.duplicated(['col_1'], keep=False)]
输出:
col_1 col_2
0 A B
2 A C
试试这个:
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]
您可以使用按列排序并删除重复项来做到这一点
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
我有以下数据框:
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])
但它没有产生预期的输出。
尝试使用 duplicated
:
df[df.duplicated(['col_1'], keep=False)]
输出:
col_1 col_2
0 A B
2 A C
试试这个:
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]
您可以使用按列排序并删除重复项来做到这一点
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