Панды фильтруют или удаляют строки в нескольких условиях

1

У меня есть данные boroughCounts с этими значениями выборки:

    From    To          Count
9   None    Manhattan   302
10  Bronx   Bronx       51
11  Bronx   Manhattan   244
12  None    Brooklyn    8
13  Bronx   Queens      100
14  None    None        67

Пытаться отфильтровать значения None в столбцах "От" и "Кому", используя этот подход, как описано здесь или здесь:

boroughCounts = boroughCounts[(boroughCounts.From != None) & (boroughCounts.To != None)]

boroughCounts = boroughCounts[(boroughCounts["From"] != None) & (boroughCounts["To"] != None)]

Но это не работает, и все ценности остались такими, какие есть. Я использую это неправильно, или есть лучший способ сделать это?

Теги:
pandas
dataframe

2 ответа

1
Лучший ответ

Используйте это, потому что None - это строка, и вам нужно заменить эту строку на NaN:

df_out = boroughCounts.replace('None', np.nan).dropna()
df_out

Выход:

     From         To  Count
10  Bronx      Bronx     51
11  Bronx  Manhattan    244
13  Bronx     Queens    100

Или вы можете использовать логическое индексирование с помощью "Нет":

boroughCounts[(boroughCounts.From != "None") & (boroughCounts.To != "None")]
  • 1
    Использование «None» сработало, спасибо @Scott, кажется, что оно было преобразовано в строку при импорте из RDD! Точно сказать не могу
1

Осмотрите ваш блок данных, чтобы понять типы.

boroughCounts.dtypes

Это скажет вам, что он To и From cols является объектом типа. Это может означать, что это все строки или комбинация строк и типа "Нет". Осмотрите один из ваших Nones.

type(boroughCounts.iloc[15].From)

Это покажет вам, является ли столбец None в столбце From для строки 15 строкой. Если это так, вам нужно изменить свой запрос.

  • 0
    эти подсказки были полезны

Ещё вопросы

Сообщество Overcoder
Наверх
Меню