Как преобразовать строки «NaN» в серии «Панды» в нулевые значения для «дропна»? - PullRequest
0 голосов
/ 11 декабря 2018

Я попробовал пару методов для очистки строк, содержащих NaN из определенной Серии в моем DataFrame, только чтобы понять, что каждая запись NaN является строкой 'NaN', а не нулевым значением.

В моемВ конкретном примере каждая строка представляет страну, и поэтому я хочу удалить все страны, у которых нет значения ВВП в столбце 'GDP per Capita', из Фрейма данных.

Некоторые действия, которые я пробовал (не удалось):

df_noGDP = df
df_noGDP.dropna(axis=0, subset=['GDP per Capita']) 

и

df_noGDP = df.loc[df['GDP per Capita'] != np.nan]

Когда я звоню df_noGDP, я вижу, что значения NaN не удаляются.Я полагаю, что я либо делаю глупую синтаксическую ошибку где-то, либо мне нужно преобразовать мои типы данных.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Сначала преобразуйте ваши строки в NaN значения:

df = df.replace('NaN', np.nan)

Затем присвойте обратно или , указав ваш метод на месте:

df = df.dropna(subset=['GDP per Capita'])           # not in place version
df.dropna(subset=['GDP per Capita'], inplace=True)  # in place version

В качестве альтернативы можно использовать loc с notnull, поскольку NaN != NaN по схеме :

df = df.loc[df['GDP per Capita'].notnull()]
0 голосов
/ 11 декабря 2018

Do:

df_noGDP=df_noGDP.replace('NaN',np.nan)

Или:

df_noGDP.replace('NaN','np.nan,inplace=1)

Тогда ваши вещи будут работать как положено.

...