2016-06-01 9 views
1
age_cleaned_titanic_df.groupby('Age_group').mean() 
age_cleaned_titanic_df.groupby('Age_group').get_group((0,10]) 

Die get_group Funktion gibt mir Fehler als ‚age_group‘ Spalte hat Werte, die halboffene Indizes von Bins sind. (0,10] (10,20] ... ... (70,80].Wie get_group anzuwenden Daten in Pandas GROUPBY wenn die groupby Spalte eine Kategorie

Wie kann ich dann den get_group() -Methode durchführen? Die meisten Beispiele in der Dokumentation und . Stackoverflow Diskussion über Spalten Werte, die Strings/Zahlen sind, wo get_group() einfach wird wie es zu tun, wenn die groupby Spalte ist eine Kategorie

+2

haben Sie versucht, 'age_cleaned_titanic_df .groupby ('Age_group'). get_group ('(0,10)') '? – MaxU

+0

Ja, habe ich. Es gibt einen Schlüsselfehler: 'KeyError: '(0,10)' ' –

+0

was ist mit' age_cleaned_titanic_df.groupby (' Age_group '). Get_group (' (0, 10] ') '? [How-to-make-good -reproducible-pandas-Beispiele] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples/32536193#32536193) – MaxU

Antwort

0

muss ein Leerzeichen zwischen 0, und 10 sein -. wie '(0, 10]'

Hier ist eine kleine Demonstration:

df = pd.DataFrame({'age': np.random.randint(10,30,20)}) 
df['Age_group'] = pd.cut(df.age, bins=[10, 15, 20, 25, 30]) 

dies funktioniert:

In [141]: df.groupby('Age_group').get_group('(10, 15]') 
Out[141]: 
    age Age_group 
1 11 (10, 15] 
6 12 (10, 15] 
11 13 (10, 15] 
12 14 (10, 15] 
14 15 (10, 15] 
15 12 (10, 15] 
17 14 (10, 15] 
18 13 (10, 15] 

jetzt das gleiche, aber ohne einen Leerraum zwischen den Werten:

In [142]: df.groupby('Age_group').get_group('(10,15]') 
--------------------------------------------------------------------------- 
KeyError         Traceback (most recent call last) 
<ipython-input-142-53b04eccd579> in <module>() 
----> 1 df.groupby('Age_group').get_group('(10,15]') 

... 

KeyError: '(10,15]' 

Daten:

In [139]: df 
Out[139]: 
    age Age_group 
0 25 (20, 25] 
1 11 (10, 15] 
2 27 (25, 30] 
3 24 (20, 25] 
4 27 (25, 30] 
5 10  NaN 
6 12 (10, 15] 
7 20 (15, 20] 
8 16 (15, 20] 
9 29 (25, 30] 
10 21 (20, 25] 
11 13 (10, 15] 
12 14 (10, 15] 
13 21 (20, 25] 
14 15 (10, 15] 
15 12 (10, 15] 
16 29 (25, 30] 
17 14 (10, 15] 
18 13 (10, 15] 
19 19 (15, 20] 
+0

Dank einer Tonne @maxU. Dieser glänzend funktioniert. versucht, einfach aus. Der Raum, was wunderlich erscheint. Jede Idee, was ist die Logik dahinter? –

+0

@PradyutVatsa, das ist nur die Art, wie die 'pd.cut()' funktioniert - es erstellt Bins als Strings – MaxU