pd.unique
bir giriş dizisinin, ya da DataFrame sütun veya dizininden benzersiz değerler verir.
Bu işlevin girdisi tek boyutlu olmalıdır, bu nedenle birden fazla sütunun birleştirilmesi gerekir. En basit yol, istediğiniz sütunları seçmek ve daha sonra değerleri düzleştirilmiş bir NumPy dizisinde görüntülemek. Bütün işlem aşağıdaki gibidir: ravel()
getiri daha bir dizi yöntem, bir çok-boyutlu dizinin bir görünüşüdür (mümkünse) olan
>>> pd.unique(df[['Col1', 'Col2']].values.ravel('K'))
array(['Bob', 'Joe', 'Bill', 'Mary', 'Steve'], dtype=object)
Not olduğu. 'K'
argümanı, diziyi elemanların bellekte saklanması sırasına göre düzleştirme yöntemini anlatır (pandalar genellikle Fortran-contiguous order'da altta yatan dizileri, satırlardan önceki sütunları depolar). Bu, yöntemin varsayılan 'C' sırasını kullanmaktan önemli ölçüde olabilir. yöntem çok boyutlu diziler kolları olarak burada ravel()
kullanmaya gerek
>>> np.unique(df[['Col1', 'Col2']].values)
array(['Bill', 'Bob', 'Joe', 'Mary', 'Steve'], dtype=object)
yok:
alternatif bir yolu sütunları seçin ve np.unique
onları geçmektir. Yine de, bu, benzersiz değerleri tanımlamaktan ziyade sıralı bir algoritma kullanması nedeniyle pd.unique
'dan daha yavaş olabilir.
hız farkı (benzersiz değerler sadece bir avuç, özellikle) büyük DataFrames için önemlidir:
>>> df1 = pd.concat([df]*100000, ignore_index=True) # DataFrame with 500000 rows
>>> %timeit np.unique(df1[['Col1', 'Col2']].values)
1 loop, best of 3: 1.12 s per loop
>>> %timeit pd.unique(df1[['Col1', 'Col2']].values.ravel('K'))
10 loops, best of 3: 38.9 ms per loop
>>> %timeit pd.unique(df1[['Col1', 'Col2']].values.ravel()) # ravel using C order
10 loops, best of 3: 49.9 ms per loop
'.önceki cevabınızdaki değerler gereklidir; aksi halde, dizi (['Col1', 'Col2'], dtype = '| S4') ' – congusbongus
@congusbongus: bunu işaretlediğiniz için teşekkürler - cevabı güncelledim. Görünüşe göre Panda'nın/NumPy'nin bazı versiyonları için '.values' gereklidir (bunu NumPy 1.9.2 ve Pandas 15.2 ile test ediyordum ve çalışmamıştı). –
Diziler yerine bir veri çerçevesini nasıl alırsınız? – Lisle