2012-10-18 7 views
6

인덱스가 고유한지 여부를 확인하는 함수가 있습니까? 아니면 dict 및 back 또는 이와 비슷한 것으로 변환하여 파이썬 '자체'에서 이것을 처리 할 가능성이 있습니까?python pandas series에서 중복을 제거합니다.

아래 주석에서 언급했듯이 : python pandas는 numpy/scipy를 기반으로하는 프로젝트입니다.

to_dict 및 back 작품이지만, 나는 이것이 커질 때 느려졌을 것입니다.

In [24]: a = pandas.Series([1,2,3], index=[1,1,2]) 

In [25]: a 
Out[25]: 
1 1 
1 2 
2 3 

In [26]: a = a.to_dict() 

In [27]: a 
Out[27]: {1: 2, 2: 3} 

In [28]: a = pandas.Series(a) 

In [29]: a 
Out[29]: 
1 2 
2 3 

답변

3
사용 groupby

In [279]: s 
Out[279]: 
a 1 
b 2 
b 3 
b 4 
e 5 

In [280]: grouped = s.groupby(level=0) 

In [281]: grouped.first() 
Out[281]: 
a 1 
b 2 
e 5 

In [282]: grouped.last() 
Out[282]: 
a 1 
b 4 
e 5 
+0

pandas 0.8 이상에서는 인덱스가 중복 될 수 있다고 생각합니다. 즉 s = Series ([1,2,1], index = [ 'a', 'a', b ']). to_dict와 back은 그 트릭을 수행하지만, 이것을 처리 할 수있는 옵션이나 무언가가 있어야하거나 아마도 Series를 구성하는 방식과 관련이있는 것처럼 보입니다. – mathtick

+0

은 질문을 해결하기위한 것입니다. 웨스 맥키 니 (Wes McKinney)가 몇 시간 씩 시간을 들여 놓친 피정입니다. – root

+0

@ mathtick - 대답을 편집했습니다. – root

6

last()은 BTW 우리는 가까운 장래에 DataFrame.drop_duplicates 같은 시리즈에 drop_duplicates 방법을 추가 할 계획.

+0

그 이후로 추가되었지만 다른 값을 가진 OP의 경우에는 아무것도하지 않는다. ('pd.Series ([1,2,3], index = [1,1,2]). drop_duplicates()'->'1 : 1, 1 : 2, 2 : 3'), 루트의 대답이 사용되어야합니다. – metakermit

+0

FWIW,'df.drop_duplicates'가 구현되었습니다. –

+0

시리즈 용이 아닌 DataTram @TimMcNamara 용으로 구현되었습니다. –

관련 문제