pandas 取出dataframe中重複的資料(關於某欄位),即去掉不重複的資料
阿新 • • 發佈:2019-01-08
和dataframe去重不同,當需要的是那些重複資料而不是非重複資料是,就想要將重複資料提取出來時,或者去除那些非重複資料。
主要思路:
1. 採用drop_duplicates對資料去兩次重,一次將重複資料全部去除(keep=False),另一次將重複資料保留一個(keep='first);
2. 上一步我們得到了兩類去重資料,分別是含有原本重複的資料(a)和不含有原本重複的資料(b),b是a的真子集,然後就可以用作差集的思想(http://blog.csdn.net/jasonwang_/article/details/78797458),即a-b,得到我們需要的原本重複的資料。
示例程式碼如下:
最後得到的三行資料就是重複的資料。>>>import pandas as pd >>>data={'state':[1,1,2,2,1,2,2],'pop':['a','b','c','d','b','c','d']} >>>frame=pd.DataFrame(data) >>>frame pop state 0 a 1 1 b 1 2 c 2 3 d 2 4 b 1 5 c 2 6 d 2 >>>a = frame.drop_duplicates(subset=['pop'],keep='first') >>>a pop state 0 a 1 1 b 1 2 c 2 3 d 2 >>>b = frame.drop_duplicates(subset=['pop'],keep=False) >>>b pop state 0 a 1 >>>a.append(b).drop_duplicates(subset=['pop'],keep=False) pop state 1 b 1 2 c 2 3 d 2