2017-12-21 3 views
1

Ich weiß, dassListe eindeutige Werte in einem Pandas Datenrahmen

df.name.unique() 

eindeutige Werte in einer Spalte 'name' geben wird.

Zum Beispiel:

name report year 
Coch Jason 2012 
Pima Molly 2012 
Santa Tina 2013 
Mari Jake 2014 
Yuma Amy  2014 

array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object) 

Doch lassen Sie uns sagen, ich habe ~ 1000 Spalten und ich möchte alle zusammen alle Spalten eindeutige Werte sehen.

Wie mache ich das?

Antwort

1

ein Wörterbuch Verständnis Verwendung mit unique:

pd.Series({c: df[c].unique() for c in df}) 

Die resultierende Ausgabe:

name  [Coch, Pima, Santa, Mari, Yuma] 
report [Jason, Molly, Tina, Jake, Amy] 
year     [2012, 2013, 2014] 
2

Sie können mit set

list(map(set,df.values.T)) 
Out[978]: 
[{'Coch', 'Mari', 'Pima', 'Santa', 'Yuma'}, 
{'Amy', 'Jake', 'Jason', 'Molly', 'Tina'}, 
{2012, 2013, 2014}] 

Nachdem in Serie setzen

pd.Series(list(map(set,df.values.T)),index=df.columns) 
Out[980]: 
name  {Santa, Pima, Yuma, Coch, Mari} 
report {Jason, Amy, Jake, Tina, Molly} 
year     {2012, 2013, 2014} 
dtype: object 
1

Wenn Sie Ihnen die Ergebnisse mögen in einer Liste haben, können Sie so etwas wie diese

[df[col_name].unique() for col_name in df.columns] 

heraus tun:

[array(['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'], dtype=object), 
array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object), 
array([2012, 2013, 2014])] 

Diese 2D-Liste von Array erstellen wird, wo jede Zeile ist ein eindeutiges Array von Werten in jeder Spalte.

Wenn Sie eine 2D-Liste von Listen haben möchten, können Sie die oben

[df[i].unique().tolist() for i in df.columns] 

heraus ändern:

[['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'], 
['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
[2012, 2013, 2014]] 
Verwandte Themen