根据重新排列的重复项切片 pandas 数据框(或如何删除重新排列的重复项)

Slicing pandas dataframe based on rearranged duplicates (or how to drop rearranged duplicates)

我有一个格式为

的大数据框
   col1    col2    val1    val2
[0]A       B       0.8     0.1
[1]B       A       0.8     0.1
[2]A       C       0.3     0.9
[3]A       D       0.2     0.8
[4]D       A       0.2     0.8

如您所见,有些行是重复的,只有 col1col2 颠倒了。例如,行 1 与行 0 重复,行 4 与行 3 重复。您可以根据 col1:col2 的匹配项等于 col2:col1 的匹配项来删除重复项吗?

您可以按 np.sort 对两列进行排序并返回,然后使用 DataFrame.drop_duplicates 指定一些列:

df[['col1','col2']] = np.sort(df[['col1','col2']], axis=1)
df1 = df.drop_duplicates(['col1','col2'])
print (df1)
  col1 col2  val1  val2
0    A    B   0.8   0.1
2    A    C   0.3   0.9
3    A    D   0.2   0.8

删除所有列的重复项:

df2 = df.drop_duplicates()
print (df2)
  col1 col2  val1  val2
0    A    B   0.8   0.1
2    A    C   0.3   0.9
3    A    D   0.2   0.8