我有一个具有两列A
和B
的 Dataframe 。例如,我认为(0,50)
和(50,0)
是重复的。在Pandas中,什么是从 Dataframe 中删除这些重复的有效方法?
import pandas as pd
# Initial data frame.
data = pd.DataFrame({'A': [0, 10, 11, 21, 22, 35, 5, 50],
'B': [50, 22, 35, 5, 10, 11, 21, 0]})
data
A B
0 0 50
1 10 22
2 11 35
3 21 5
4 22 10
5 35 11
6 5 21
7 50 0
# Desired output with "duplicates" removed.
data2 = pd.DataFrame({'A': [0, 5, 10, 11],
'B': [50, 21, 22, 35]})
data2
A B
0 0 50
1 5 21
2 10 22
3 11 35
理想情况下,输出将按列A
的值排序。
6条答案
按热度按时间dxpyg8gm1#
下面是一个稍显丑陋但速度更快的解决方案:
时序:用于8K行DF
mklgxw1f2#
您可以在删除重复项之前对数据框的每一行进行排序:
如果希望结果按列
A
排序:5sxhfpxr3#
现在这个解决方案起作用了
可以根据需要添加更多的列。
gywdnpxw4#
drop_duplicates()函数的一个示例
mu0hgdu05#
这里是一个有点冗长的解决方案,但可能对初学者有帮助-
创建新列,以便对列A和列B中的值进行跨行排序-
删除重复项,按列“C”排序,并重命名列
PS -“np.where”函数的工作原理与Excel中的If公式类似(逻辑条件,值为TRUE,值为FALSE)
dwbf0jvd6#
另一个经典的选择是将这些值聚合为一个冻结集合,并使用布尔索引。
输出量:
它的效率也相当高,尽管不如经过优化的
np.sort
方法: