2017-10-08 7 views
0

Bonjour

i besoin de créer une requête qui trouve les comtés qui appartiennent à des régions 1 ou 2, dont le nom commence par « Washington », et dont POPESTIMATE2015 était supérieure à leur POPESTIMATE 2014, en utilisant pandas géants Cette fonction devrait renvoyer un DataFrame 5x2 avec les colonnes = ['STNAME', 'CTYNAME'] et le même ID d'index que le census_df (trié par ordre croissant par index)une requête en utilisant pandas géants

vous trouverez une description de mes données dans l'image : enter image description here

Répondre

2

Tenir compte de la démonstration suivante:

In [19]: df 
Out[19]: 
    REGION  STNAME   CTYNAME POPESTIMATE2014 POPESTIMATE2015 
0  0 Washington   Washington    10    12 
1  1 Washington Washington County    11    13 
2  2  Alabama  Alabama County    13    15 
3  4  Alaska    Alaska    14    12 
4  3  Montana   Montana    10    11 
5  2 Washington   Washington    15    19 

In [20]: qry = "REGION in [1,2] and POPESTIMATE2015 > POPESTIMATE2014 and CTYNAME.str.contains('^Washington')" 

In [21]: df.query(qry, engine='python')[['STNAME', 'CTYNAME']] 
Out[21]: 
     STNAME   CTYNAME 
1 Washington Washington County 
5 Washington   Washington 
2

Utilisez boolean indexing avec le masque créé par isin et startswith:

mask = df['REGION'].isin([1,2]) & 
     df['COUNTY'].str.startswith('Washington') & 
     (df['POPESTIMATE2015'] > df['POPESTIMATE2014']) 

df = df.loc[mask, ['STNAME', 'CTYNAME']]