根据重新排列的重复项切片 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
如您所见,有些行是重复的,只有 col1
和 col2
颠倒了。例如,行 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
我有一个格式为
的大数据框 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
如您所见,有些行是重复的,只有 col1
和 col2
颠倒了。例如,行 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