移除重复数据
dataframe中常常会出现重复行,DataFrame对象的duplicated方法返回一个布尔型的Series对象,可以表示各行是否是重复行。还有一个drop_duplicates方法,用于返回一个移除了重复行的DataFrame。
In [36]: data = DataFrame({'k1':['one']*3+['two']*4,"k2":[1,1,2,3,3,4,4]}) In [37]: data Out[37]: k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two 3 5 two 4 6 two 4 #duplicated方法用于判断是否重复行,返回的是一个Series对象 In [39]: data.duplicated() Out[39]: 0 False 1 True 2 False 3 False 4 True 5 False 6 True dtype: bool #drop_duplicates,剔除重复行,默认检查的是所有列的集合。 In [41]: data.drop_duplicates() Out[41]: k1 k2 0 one 1 2 one 2 3 two 3 5 two 4 #指定部分列进行重复判断和删除 In [42]: data.duplicated('k1') Out[42]: 0 False 1 True 2 True 3 False 4 True 5 True 6 True dtype: bool In [43]: data.drop_duplicates('k2') Out[43]: k1 k2 0 one 1 2 one 2 3 two 3 5 two 4
是否已经发现,duplicated和drop_duplicates默认保留的都是第一个出现的值组合,传入keep=‘last’,则保留最后一个出现的值。
keep的选项:
‘first’:默认保留第一个出现的值。
‘last’:保留最后一个出现的值
False:使所有的duplicates为True
In [49]: data.drop_duplicates(keep = 'last') Out[49]: k1 k2 1 one 1 2 one 2 4 two 3 6 two 4 In [50]: data.drop_duplicates(keep = False) Out[50]: k1 k2 2 one 2