Sto lavorando attraverso un'assegnazione con Panda e sto usando np.where() per creare aggiungere una colonna a una Panda dataframe con tre possibili valori:Pandas Colonna di costruzione con np.where()
fips_df['geog_type'] = np.where(fips_df.fips.str[-3:] != '000', 'county', np.where(fips_df.fips.str[:] == '00000', 'country', 'state'))
lo stato della dataframe dopo aver aggiunto la colonna è così:
costruzioneprint fips_df[:5]
fips geog_entity fips_prefix geog_type
0 00000 UNITED STATES 00 country
1 01000 ALABAMA 01 state
2 01001 Autauga County, AL 01 county
3 01003 Baldwin County, AL 01 county
4 01005 Barbour County, AL 01 county
questa colonna è testato da due asserisce. Il primo passa e il secondo fallisce.
## check the numbers of geog_type
assert set(fips_df['geog_type'].value_counts().iteritems()) == set([('state', 51), ('country', 1), ('county', 3143)])
assert set(fips_df.geog_type.value_counts().iteritems()) == set([('state', 51), ('country', 1), ('county', 3143)])
Qual è la differenza tra chiamare colonne come fips_df.geog_type e fips_df [ 'geog_type'] che causa la mia seconda assert a fallire?
http://pandas.pydata.org/pandas-docs/dev/dsintro.html#dataframe-column-attribute-access-and-ipython-completion –
Grazie! @andyhayden. Ho pensato che entrambi i metodi di accesso alle colonne fossero validi, sebbene non avessi visto quella parte della documentazione di Pandas. Forse il problema sta venendo dall'asserzione affermazione – ajrenold
@ajrenold me too tbh, questo è l'unico modo che posso pensare, potrebbe valere la pena provare ad affermare df.A == df ['A']? –