Заменить строковое значение на NaN во фрейме данных pandas - Python - PullRequest
0 голосов
/ 07 декабря 2018

Должен ли я заменить значение?с NaN, чтобы вы могли вызвать метод .isnull ().Я нашел несколько решений, но некоторые ошибки всегда возвращаются.Предположим:

data = pd.DataFrame([[1,?,5],[?,?,4],[?,32.1,1]])

и если я попытаюсь:

pd.data.replace('?', np.nan)

У меня есть:

     0     1  2
0  1.0   NaN  5
1  NaN   NaN  4
2  NaN  32.1  1    

, но data.isnull () возвращает:

       0      1      2
0  False  False  False
1  False  False  False
2  False  False  False

Почему?

Ответы [ 2 ]

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

? является не нулевым.Таким образом, вы ожидаете получить False по isnull тесту

>>> data = pandas.DataFrame([[1,'?',5],['?','?',4],['?',32.1,1]])
>>> data
          0      1      2
   0  False  False  False
   1  False  False  False
   2  False  False  False

После замены ? на NaN тест будет выглядеть по-другому

>>> data = data.replace('?', np.nan)
>>> data
       0      1      2
0  False   True  False
1   True   True  False
2   True  False  False
0 голосов
/ 07 декабря 2018

Я думаю, вы забыли назначить обратно:

data = pd.DataFrame([[1,'?',5],['?','?',4],['?',32.1,1]])

data = data.replace('?', np.nan)
#alternative
#data.replace('?', np.nan, inplace=True)
print (data)
     0     1  2
0  1.0   NaN  5
1  NaN   NaN  4
2  NaN  32.1  1

print (data.isnull())
       0      1      2
0  False   True  False
1   True   True  False
2   True  False  False
...