Python 在Pandas中使用groupby查找重复项
我使用熊猫读取csv文件。然后,我使用下面的代码检查数据中是否有重复的行:Python 在Pandas中使用groupby查找重复项,python,pandas,Python,Pandas,我使用熊猫读取csv文件。然后,我使用下面的代码检查数据中是否有重复的行: import pandas as pd df= pd.read_csv("data.csv", na_values=["", " ", "-"]) print df.shape >> (71644, 15) print df.drop_duplicates().shape >> (31171, 15) 我发现有一些重复的行,因此我想查看哪些行多次出现: data_groups = df.g
import pandas as pd
df= pd.read_csv("data.csv", na_values=["", " ", "-"])
print df.shape
>> (71644, 15)
print df.drop_duplicates().shape
>> (31171, 15)
我发现有一些重复的行,因此我想查看哪些行多次出现:
data_groups = df.groupby(df.columns.tolist())
size = data_groups.size()
size[size > 1]
这样我就得到了系列([],数据类型:int64)
此外,我可以找到重复的行执行以下操作:
duplicates = df[(df.duplicated() == True)]
print duplicates.shape
>> (40473, 15)
因此df.drop_duplicates()
和df[(df.duplicated()==True)]
显示有重复行,但groupby
没有
我的数据由字符串、整数、浮点和nan组成
我是否误解了上面提到的函数中的某些内容,或者发生了其他情况?只需添加
reset\u index()
即可将聚合重新对齐到新的数据帧
此外,size()
函数会创建一个未标记的0列,您可以使用该列筛选重复的行。然后,只需找到结果数据帧的长度,就可以像其他函数一样输出重复计数:drop_duplicates()
,duplicated()==True
data_groups = df.groupby(df.columns.tolist())
size = data_groups.size().reset_index()
size[size[0] > 1] # DATAFRAME OF DUPLICATES
len(size[size[0] > 1]) # NUMBER OF DUPLICATES
对我来说,这似乎是一个优雅的解决方案。