2012-10-18 38 views
6

Dizinin benzersiz olduğunu zorunlu kılacak bir işlev var mıdır, yoksa sadece bunu python'da 'kendisi' ile başa çıkmak ve bu gibi bir şeye dönüştürebilir mi?python pandas dizideki kopyaları sil

Aşağıdaki yorumlarda belirtildiği gibi: python pandaları, numpy/scipy üzerine kurulu bir projedir.

to_dict ve geri işleri, ama BÜYÜK aldığınızda bu yavaşlaşacağına bahse girerim.

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 

cevap

3
Kullanım groupby

ve

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

Pandalarda 0.8 ve üstü çift indislere sahip olabilirsiniz ... yani s = Series ([1,2,1], index = ['a', 'a', 'b']). to_dict ve geri hile yapar ama bu işlemek için bir seçenek ya da bir şey olmalı gibi görünüyor ya da belki de ben Serisi inşa etme yolunda bir şey. Sorunun temizlenmesi için – mathtick

+0

. Wes McKinney'i bir kaç saat kaçırdığın bir pisi ... – root

+0

@ mathtick - cevabı düzenledim. – root

6

last() BTW yakın gelecekte DataFrame.drop_duplicates gibi Serisine bir drop_duplicates yöntemi ekleyerek planı.

+0

O zamandan beri eklendi, fakat OP'nin farklı değerlerdeki durumu için hiçbir şey yapmıyor (pd.Series ([1,2,3], index) = [1,1,2]). Drop_duplicates() '->' 1: 1, 1: 2, 2: 3'), dolayısıyla root'un cevabı kullanılmalıdır. – metakermit

+0

FWIW, 'df.drop_duplicates' uygulandı. –

+0

, Series için değil, Dataframes @TimMcNamara için uygulanmıştır. –