DataFrame中会出现重复行:
1、DataFrame的
duplicated方法返回一个布尔型Series,表示各行是否是重复行
2、
drop_duplicates方法,用于返回一个移除了重复行的DataFrame
data=DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,3,3,4,4]}) data Out[5]: k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two 3 5 two 4 6 two 4 #使用duplicated方法 data.duplicated() Out[6]: 0 False 1 True 2 False 3 False 4 True 5 False 6 True dtype: bool #使用drop_duplicates方法 data.drop_duplicates() Out[7]: k1 k2 0 one 1 2 one 2 3 two 3 5 two 4
两个方法都默认判断全部列,但是也可以指定列进行重复项判断。
data['v1']=range(7) data Out[9]: k1 k2 v1 0 one 1 0 1 one 1 1 2 one 2 2 3 two 3 3 4 two 3 4 5 two 4 5 6 two 4 6 #指定列进行判断 data.drop_duplicates(['k1']) Out[10]: k1 k2 v1 0 one 1 0 3 two 3 3
两个方法默认保留第一个出现的值组合。传入keep='last'保留最后一个:
data.drop_duplicates(['k1','k2'],keep='last') Out[14]: k1 k2 v1 1 one 1 1 2 one 2 2 4 two 3 4 6 two 4 6 #keep参数有三个取值:"first","last",False #其中"first"是默认的,False表示去除所有的重复行
#参数inplace=True表示直接在原来的DataFrame上去处重复项,False表示生成一个副本 data.drop_duplicates(['k1','k2'],keep='last',inplace=True) data Out[19]: k1 k2 v1 1 one 1 1 2 one 2 2 4 two 3 4 6 two 4 6