2016-02-20 14 views
20

dire che abbiamo usato panda dataframe[column].value_counts() quali uscite:valori Estratto in value_counts Pandas()

apple 5 
sausage 2 
banana 2 
cheese 1 

Come si fa a estrarre i valori di questa nell'ordine sopra indicato per esempio da max a min? [apple,sausage,banana,cheese]

+0

La prego di fornire un [MCVE] (http://stackoverflow.com/help/mcve)? Hai usato 'dataframe.value_counts()' o 'series.value_counts()'? In che tipo di dati hai l'output? – albert

+1

Si noti che l'output di 'value_counts()' è una serie, quindi è possibile utilizzare qualsiasi metodo di serie, ma spesso lo si salverà così com'è, a seconda di cosa si vorrà fare in seguito. – JohnE

risposta

32

Prova questo:

dataframe[column].value_counts().index.tolist() 
['apple', 'sausage', 'banana', 'cheese'] 
+0

Fantastico! In un'altra nota, quando si stampa 'dataframe [column] .value_counts()' si ottiene un dtype in fondo. C'è un modo per non ottenerlo? – JamesButterlips

+5

Prova: 'dataframe [colonna] .value_counts(). A_frame()' –

1

prima devi sort il dataframe dalla colonna maxcount-min se non è risolto in questo modo già. Nel tuo post, è nel giusto ordine già, ma io sort in ogni modo:

dataframe.sort_index(by='count', ascending=[False]) 
    col  count 
0 apple 5 
1 sausage 2 
2 banana 2 
3 cheese 1 

Quindi è possibile uscita la colonna col a un elenco:

dataframe['col'].tolist() 
['apple', 'sausage', 'banana', 'cheese'] 
1
#!/usr/bin/env python 

import pandas as pd 

# Make example dataframe 
df = pd.DataFrame([(1, 'Germany'), 
        (2, 'France'), 
        (3, 'Indonesia'), 
        (4, 'France'), 
        (5, 'France'), 
        (6, 'Germany'), 
        (7, 'UK'), 
        ], 
        columns=['groupid', 'country'], 
        index=['a', 'b', 'c', 'd', 'e', 'f', 'g']) 

# What you're looking for 
values = df['country'].value_counts().keys().tolist() 
counts = df['country'].value_counts().tolist() 

Ora, print(df['country'].value_counts()) dà :

France  3 
Germany  2 
UK   1 
Indonesia 1 

e print(values) restituisce:

['France', 'Germany', 'UK', 'Indonesia'] 

e print(counts) dà:

[3, 2, 1, 1]