2016-02-20 20 views
20

Sagen wir Pandas dataframe[column].value_counts() verwendet haben, die Ausgänge:Extract Werte in Pandas value_counts()

apple 5 
sausage 2 
banana 2 
cheese 1 

Wie extrahieren Sie die Werte aus dieser in der Reihenfolge oben zum Beispiel gezeigt max bis min? [apple,sausage,banana,cheese]

+0

Könnten Sie bitte eine [MCVE] (http://stackoverflow.com/help/mcve)? Haben Sie 'dataframe.value_counts()' oder 'series.value_counts()' verwendet? Welchen Datentyp haben Sie ausgegeben? – albert

+1

Beachten Sie, dass die Ausgabe von 'value_counts()' eine Serie ist, also können alle Serienmethoden verwendet werden, aber oft speichern Sie sie einfach wie sie sind, abhängig davon, was Sie später damit machen wollen. – JohnE

Antwort

32

Versuchen Sie folgendes:

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

Super! Wenn Sie andererseits 'dataframe [column] .value_counts() 'drucken, erhalten Sie unten einen dtype. Gibt es einen Weg, das nicht zu bekommen? – JamesButterlips

+5

Versuchen Sie: 'Dataframe [Spalte] .value_counts(). To_frame()' –

1

Zuerst müssen Sie sort die dataframe durch die count Spalte max-min wenn es auf diese Weise schon nicht sortiert ist. In Ihrem Beitrag, ist es in der richtigen Reihenfolge schon, aber ich werde es sort sowieso:

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

Dann können Sie die Ausgabe der col Spalte zu einer Liste:

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() 

Nun print(df['country'].value_counts()) gibt :

France  3 
Germany  2 
UK   1 
Indonesia 1 

und print(values) gibt:

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

und print(counts) gibt:

[3, 2, 1, 1]