pracuję poprzez przypisanie z Pand i używam np.where(), aby utworzyć dodać kolumny do Pandy DataFrame z trzech możliwych wartości:Pandy Kolumna Budowa z np.where()
fips_df['geog_type'] = np.where(fips_df.fips.str[-3:] != '000', 'county', np.where(fips_df.fips.str[:] == '00000', 'country', 'state'))
Stan DataFrame po dodaniu kolumny wygląda następująco:
print 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
Konstrukcja kolumny jest testowana przez dwa twierdzenia. Pierwsze podania i drugie zawiedzie.
## 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)])
Jaka jest różnica między wywołaniem kolumny jak fips_df.geog_type i fips_df [ „geog_type”], który powoduje mój drugi assert na niepowodzenie?
http://pandas.pydata.org/pandas-docs/dev/dsintro.html#dataframe-column-attribute-access-and-ipython-completion –
Dzięki! @andyhayden. Myślałem, że obie metody dostępu do kolumn są poprawne, chociaż nie widziałem tej części dokumentacji Pandy. Być może problem pochodzi z oświadczenia stwierdzenia – ajrenold
@ajrenold mnie zbyt tbh, jest to jedyny sposób, jaki mogę wymyślić, może warto próbować potwierdzić df.A == df ['A']? –