Python pandas - логическая фильтрация.T / F против возвращения таблицы - PullRequest
0 голосов
/ 20 ноября 2018

Я делаю упражнение и у меня есть набор школьной информации.Я хочу отфильтровать данные по учебному году, поэтому у меня есть:

data['demographics'] = data['demographics'][data['demographics']['schoolyear'] == 20112012]

Я не совсем понимаю данные ['демография'] в начале задания.

Если япросто имейте:

data['demographics'] = [data['demographics']['schoolyear'] == 20112012]

код возвращает True или False, а не фактические данные таблицы.Как добавление данных ['demographics'] заставляет Python понимать, что я хочу вернуть данные вместо T / F?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Первое присваивание должно вызывать ValueError: длина значений не соответствует длине индекса.

data ['demographics'] это возвращает только столбец 'demographics' из информационного кадра, затем с этим [data ['demographics'] ['schoolyear'] == 20112012] вы фильтруете столбец 'demographics' так, что учебный год - 20112012.

Ошибка в утверждении состоит в том, что вы пытаетесь назначитьотфильтрованные данные в данные ['demographics'], потому что отфильтрованные данные содержат меньше элементов, чем data ['demographics'].

Я рекомендую назначать отфильтрованные данные новой переменной, подобной этой.

filteredData = data['demographics'][data['demographics']['schoolyear'] == 20112012]
0 голосов
/ 20 ноября 2018

data['demographics']['schoolyear'] == 20112012 сообщает вам, совпадают они или нет.

Итак, [data['demographics']['schoolyear'] == 20112012] дает вам список True или False

Итак,

data['demographics'][data['demographics']['schoolyear'] == 20112012]

извлекает значение data['demographics'], где у вас есть True.

, т. Е. Это дает нужные значения.

...