ВопросValueError: Выдерживает DataFrame с булевыми значениями только
В этом файле данных, Соединенные Штаты разбиты на четыре области с использованием колонки «РЕГИОН».
Создайте запрос, который находит уезды, которые принадлежат к регионам 1 или 2, название которого начинается с «Вашингтон», и чьи POPESTIMATE2015 было больше, чем их POPESTIMATE 2014.
Эта функция должна возвращать 5x2 DataFrame с столбцы = ['STNAME', 'CTYNAME'] и тот же идентификатор индекса, что и census_df (отсортировано по возрастанию по индексу).
КОД
def answer_eight():
counties=census_df[census_df['SUMLEV']==50]
regions = counties[(counties[counties['REGION']==1]) | (counties[counties['REGION']==2])]
washingtons = regions[regions[regions['COUNTY']].str.startswith("Washington")]
grew = washingtons[washingtons[washingtons['POPESTIMATE2015']]>washingtons[washingtons['POPESTIMATES2014']]]
return grew[grew['STNAME'],grew['COUNTY']]
outcome = answer_eight()
assert outcome.shape == (5,2)
assert list (outcome.columns)== ['STNAME','CTYNAME']
print(tabulate(outcome, headers=["index"]+list(outcome.columns),tablefmt="orgtbl"))
ОШИБКА
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-77-546e58ae1c85> in <module>()
6 return grew[grew['STNAME'],grew['COUNTY']]
7
----> 8 outcome = answer_eight()
9 assert outcome.shape == (5,2)
10 assert list (outcome.columns)== ['STNAME','CTYNAME']
<ipython-input-77-546e58ae1c85> in answer_eight()
1 def answer_eight():
2 counties=census_df[census_df['SUMLEV']==50]
----> 3 regions = counties[(counties[counties['REGION']==1]) | (counties[counties['REGION']==2])]
4 washingtons = regions[regions[regions['COUNTY']].str.startswith("Washington")]
5 grew = washingtons[washingtons[washingtons['POPESTIMATE2015']]>washingtons[washingtons['POPESTIMATES2014']]]
/opt/conda/lib/python3.5/site-packages/pandas/core/frame.py in __getitem__(self, key)
1991 return self._getitem_array(key)
1992 elif isinstance(key, DataFrame):
-> 1993 return self._getitem_frame(key)
1994 elif is_mi_columns:
1995 return self._getitem_multilevel(key)
/opt/conda/lib/python3.5/site-packages/pandas/core/frame.py in _getitem_frame(self, key)
2066 def _getitem_frame(self, key):
2067 if key.values.size and not com.is_bool_dtype(key.values):
-> 2068 raise ValueError('Must pass DataFrame with boolean values only')
2069 return self.where(key)
2070
ValueError: Must pass DataFrame with boolean values only
Я невежественный. Где я иду не так?
Благодаря
это неправильно 'графств [census_df [«РЕГИОН»] == 1]' вы пытаетесь использовать другой ФР маскировать вам следует использовать тот же ФР : 'counties [counties ['REGION'] == 1]' или маскировать родительский df только 'census_df [census_df ['REGION'] == 1]' – EdChum
Спасибо @EdChum, но я попытался внести изменения. Эта же ошибка появляется снова! –
Редактируйте свой вопрос с обновленными попытками, заметьте, я заявляю, что вы не должны использовать другую форму df для маскировки другого df – EdChum