我正在处理 Pandas 的任务,并正在使用 np.where() 创建向 Pandas DataFrame 添加一列,其中包含三个可能的值:
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
此列构造由两个断言测试。第一次通过,第二次失败。
## 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)])
将列调用为 fips_df.geog_type 和 fips_df['geog_type'] 导致我的第二个断言失败有什么区别?