2016-06-02 4 views
2

Pandas, Jupyter Notebooks 및 Python을 사용하고 있습니다. 4 열 및 10000 개의 레코드가있는 데이터 집합이 있습니다. 현재 다음 코드를 사용하여 중복 파일을 선택하면 코드가 잘못된 레코드를 가져옵니다. FYI : 컬럼의 데이터 유형은 다음과 같다 :Pandas Dataframe 중복 레코드로 잘못된 레코드를 가져옴

Initial_Date = int64 
Final_Date = int64 
Origin = object 
sub_location = object 

내 현재 코드는 :

: 여기
dup = df.duplicated(['Initial_Date','Final_Date','Origin','sub_location'], keep='last') 

위의 코드를 이용하여 포착되고있는 데이터 세트의 예는
00121980,00121980,Australia,Brighton:Queensland 
00121980,00121980,Australia,Brisbane:Queensland 
17021987,17021987,Bangladesh,Sylhet-Sunamganj 
17021987,17021987,Brazil,Sao Paolo suburb 

첫 번째 두 레코드를 보면 : 초기 및 최종 날짜와 원본이 일치하지만 sub_origin은 일치하지 않습니다. 하나는 브라이튼이고 다른 하나는 브리즈번입니다.

동일하게 마지막 두 레코드에 적용됩니다. 날짜는 일치하지만 Origin은 동일하지 않습니다.

df.duplicated가 올바른 레코드를 선택하지 않았거나 제대로 사용하지 않는다는 것을 이해합니다. df.duplicated로 데이터 유형이 중요합니까?

방금 ​​df.duplicated을 사용하는 경우 반환되는 부울 시리즈에는 중복이 없습니다. 누군가 제발 설명해 주실 수 있습니까?/이중화 된 방법을 보여 주시겠습니까?

이것은 전체 데이터 세트가 아니지만 내가 제시 한 예제는 실제 데이터 세트에있는 문제와 정확히 일치한다는 점에 유의하십시오. df.duplicated 기준을 좁히고이 오류를 발견했습니다.

고마워 : D를 keep 매개 변수에

답변

4

에주의 :

In [116]: s = pd.Series([1,1,1,2,3]) 

In [117]: s 
Out[117]: 
0 1 
1 1 
2 1 
3 2 
4 3 
dtype: int64 

In [118]: s.duplicated(keep='first') 
Out[118]: 
0 False 
1  True 
2  True 
3 False 
4 False 
dtype: bool 

In [119]: s.duplicated(keep='last') 
Out[119]: 
0  True 
1  True 
2 False 
3 False 
4 False 
dtype: bool 

In [120]: s.duplicated(keep=False) 
Out[120]: 
0  True 
1  True 
2  True 
3 False 
4 False 
dtype: bool 

난 당신이 keep=False

docs에서 사용할 같아요

하는을 계속 : {'먼저', 'last', False}, 기본값 'first'

첫 번째 : 첫 번째 발생을 제외하고는 중복으로 표시를 True로 지정합니다.

마지막 : 마지막 항목을 제외하고는 중복으로 표시를 True로 지정하십시오.

거짓 : 모든 중복을 True로 표시하십시오.

+0

@Timetraveller이 답변은 다음과 같습니다. 귀하의 예제에서'dup'은'keep = last' 매개 변수로 인해 복제 된 모든 레코드를 보여주지 않았습니다. 'keep = False'가 설정 되었다면 마지막 두 레코드는 각각 다른 레코드의 중복이었고 서로는 볼 수 없었습니다. – piRSquared

+0

@MaxU 안녕하세요, 중복을 삭제하려면 어떻게됩니까? keep = False를 선택하면 모든 인스턴스가 삭제됩니다. 위의 예제에서 값 1을 포함하는 레코드 0,1,2가 삭제됩니다. 세 기록 중 하나를 유지하려면 어떻게됩니까? 보관을 '마지막'또는 '처음'으로 변경합니까? – Timetraveller

+0

@MaxU 감사합니다. – Timetraveller

관련 문제