私はPandasで割り当てを行っており、np.where()を使用して、次の3つの値を使用してPandasDataFrameに列を追加します。
fips_df['geog_type'] = np.where(fips_df.fips.str[-3:] != '000', 'county', np.where(fips_df.fips.str[:] == '00000', 'country', 'state'))
列を追加した後のDataFrameの状態は次のようになります。
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
この列の構成は、2つのアサートによってテストされます。最初は合格し、2番目は失敗します。
## 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)])
2番目のアサートが失敗する原因となるfips_df.geog_typeとfips_df['geog_type']として列を呼び出すことの違いは何ですか?