2017-02-24 6 views
1

Ich habe folgenden Datenrahmen:Return Teilmenge von Datenrahmen in Python Pandas

import pandas as pd 

# create simple dataset of people 
data = {'Name': ["John", "Anna", "Peter", "Linda"], 
     'Location': ["New York", "Paris", "Berlin", "London"], 
     'Age': [24, 13, 53, 33] 
     } 
data_pandas = pd.DataFrame(data) 
# IPython.display allows "pretty printing" of dataframes 
# in the Jupyter notebook 
#display(data_pandas) 
data_pandas 

Was zurückgegeben wird, ist die folgende DF:

Age Location Name 
0 24 New York John 
1 13 Paris  Anna 
2 53 Berlin  Peter 
3 33 London  Linda 

ich dies dann tun:

olderThan30 = data_pandas[data_pandas > 30] 
olderThan30 

Und es gibt folgendes zurück:


Was würde ich auf Rückkehr mag, ist nur diejenigen, die die Spalte Alter von mehr als 30 So etwas haben:

Age  Location Name 
2 53.0 Berlin  Peter 
3 33.0 London  Linda 

Wie kann ich das tun?

Antwort

1

Sie müssen die entsprechenden boolean condition zu Maske passieren:

In [104]: 
data_pandas[data_pandas['Age'] > 30] 

Out[104]: 
    Age Location Name 
2 53 Berlin Peter 
3 33 London Linda 

was hast du die ganze df vergleichen war:

In [105]: 
data_pandas > 30 

Out[105]: 
    Age Location Name 
0 False  True True 
1 False  True True 
2 True  True True 
3 True  True True 

diese dann maskiert die Zellen in der gesamten df, weshalb Sie erhalten NaN in den ersten 2 Zeilen des Alters

Während maskieren nur die Spalte von Interesse:

In [106]: 
data_pandas['Age'] > 30 

Out[106]: 
0 False 
1 False 
2  True 
3  True 
Name: Age, dtype: bool 

, wenn sie als Maske auf eine df geben, Masken die Reihen

als @JonClements vorgeschlagen hat, können Sie fühlen sich wohler query mit:

In [110]: 
data_pandas.query('Age > 30') 

Out[110]: 
    Age Location Name 
2 53 Berlin Peter 
3 33 London Linda 

Diese eine Abhängigkeit hat auf numexpr Bibliothek aber das ist normalerweise korrekt in meiner Erfahrung installiert

+0

Könnte beachten, dass, wenn Numexpr verfügbar ist mit df.query ist eine Option. –

+0

@ JonClements wird sicher aktualisieren, ich benutze 'query' nicht so viel – EdChum

+0

Vielen Dank! Dies war sehr hilfreich für mein Lernen. – martinbshp

Verwandte Themen