Bir sütundaki benzersiz değerleri bulun ve ardından bunları sıralayın


84

Pandalar veri çerçevem ​​var. Sütunlarından birinin benzersiz değerlerini artan sırada yazdırmak istiyorum. Ben böyle yapıyorum:

import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()

Sorun şu ki Noneçıktı için bir alıyorum .


6
a.sort()değiştirir ave hiçbir şey döndürmez, bu nedenle a.sort(); print a
şununla

Yanıtlar:


125

sortedyinelenebilir öğelerden yeni bir sıralanmış liste döndürür.

KOD

import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print sorted(a)

ÇIKTI

[1, 2, 3, 6, 8]

19

sort yerinde sıralar, böylece hiçbir şey döndürmez:

In [54]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
a

Out[54]:
array([1, 2, 3, 6, 8], dtype=int64)

Yani aramadan print asonra tekrar aramanız gerekiyor sort.

Örneğin.:

In [55]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
print(a)

[1 2 3 6 8]

11

Unique () yerine drop_duplicates () kullanabilirsiniz.

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a

3
drop_duplicates()14107693 satırlık bir veri çerçevesinde benzersizden () 3 kat daha hızlı olduğu bulundu [Pandas 0.18]
fixxxer

7

Oneliner'ı tercih ederim:

print(sorted(df['Column Name'].unique()))

6

Bugün soruyu kendim karşıladım. Sanırım kodunuzun 'Yok' sonucunu vermesinin nedeni (aynı yöntemi kullanarak tam olarak elde ettiğim şey)

a.sort()

listeyi değiştirmek için sıralama işlevini çağırıyor a. Anladığım kadarıyla bu bir değiştirme komutu. Sonucu görmek için print (a) kullanmanız gerekir.

Her şeyi pandalarda tutmaya çalıştığım için çözümüm:

pd.Series(df['A'].unique()).sort_values()

pandasÇözümü seviyorum çünkü NaNsonuna değer koyuyor ve karma tür dizileriyle çalışıyor.
HS-nebula

4

Pandaların arka planda yaptığı şey zaten olduğu için numpy'nin sıralamasını kullanmanızı öneririm:

import numpy as np
np.sort(df.A.unique())

Ama pandalarda her şeyi yapmak da geçerlidir.


0

Başka bir yol da set veri türünü kullanmaktır.

Kümelerin bazı özellikleri : Kümeler sırasızdır, karışık veri türleri içerebilir, bir kümedeki öğeler tekrarlanamaz, değiştirilebilir.

Sorunuzu çözme:

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))

Liste türündeki cevap :

[1, 2, 3, 6, 8]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.