1. 程式人生 > >pandas 取出dataframe中重複的資料(關於某欄位),即去掉不重複的資料

pandas 取出dataframe中重複的資料(關於某欄位),即去掉不重複的資料

和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
最後得到的三行資料就是重複的資料。