2016-07-06 3 views
4

"웹 사이트"열의 값이 두 번 이상 나타나는 모든 행을 표시하려고합니다. 예를 들어, 특정 웹 사이트 "xyz.com"이 두 번 이상 나타나는 경우 해당 행을 모두 표시하려고합니다. 아래 코드를 사용하고 있습니다. -특정 열의 값이 두 번 이상 나타나는 행 표시

df[df.website.isin(df.groupby('website').website.count() > 1)] 

위의 코드는 0 행을 반환합니다. 나는 이러한 모든 행을 표시하는 코드의 제 1 라인을 수정하는 방법

df.website.value_counts() 

-하지만 실제로 아래의 코드를 실행하여 한 번 이상 발생하는 많은 웹 사이트가 있다는 것을 볼 수 있습니까? subset='website'keep=False

답변

6

사용 duplicated :

df[df.duplicated(subset='website', keep=False)] 

샘플 입력 :

col1 website 
0 A abc.com 
1 B abc.com 
2 C abc.com 
3 D abc.net 
4 E xyz.com 
5 F foo.bar 
6 G xyz.com 
7 H foo.baz 

샘플 출력이 작동

col1 website 
0 A abc.com 
1 B abc.com 
2 C abc.com 
4 E xyz.com 
6 G xyz.com 
+0

! 감사. 또 다른 혼란이 있습니다. 위의 코드 줄을 사용한 후에는 200 행 (200 행에는 중복 웹 사이트가 있음)이 표시됩니다. df.drop_duplicates (하위 집합 = '웹 사이트')를 사용하면 2500 개의 행이 삭제됩니다. 왜 그런 일이 일어나는거야? 그냥 200 행을 떨어 뜨리지 않을까요? – ComplexData

+0

모든 중복을 삭제하려면'df.drop_duplicates (subset = 'website', keep = False)'를 사용하십시오. 디폴트로,'drop_duplicates'는 복제본의 첫 번째 인스턴스를 유지하고 나머지는'keep '으로 달리 지정하지 않는 한 삭제합니다. 그것은 당신이보고있는 행동을 설명하지 못하며,'drop_duplicates' 테스트는 저에게 예상대로 작동합니다. – root

+0

좀 더 깊이 파고 '누락'된 행이 'duplicated' 출력에 없는지 확인할 수 있습니다. 이를 조사하면 불일치를 설명하는 데 도움이 될 수 있습니다. – root

관련 문제