2015-09-22 2 views
9

Я пытаюсь заполнить недостающие значения (NAN), используя приведенный ниже кодПанды - заполнение NaNs в категориальных данных

NAN_SUBSTITUTION_VALUE = 1 
g = g.fillna(NAN_SUBSTITUTION_VALUE) 

, но я получаю следующее сообщение об ошибке

ValueError: fill value must be in categories. 

ли кто-нибудь пожалуйста ввергать свет на эту ошибку.

+0

Вы попробовали что-нибудь? Вы искали ошибку в Интернете? Не сказав, что вы пробовали, вам трудно помочь. Никто не будет делать домашнее задание для вас. – HackCode

+1

Я поставлю этот вопрос как «Непонятно, что вы спрашиваете». Http://stackoverflow.com/help/how-to-ask –

+0

'1', вероятно, нет в категории. – pacholik

ответ

2

После создания Категориальные данные, вы можете вставить только значения в категорию.

>>> df 
    ID value 
0 0  20 
1 1  43 
2 2  45 

>>> df["cat"] = df["value"].astype("category") 
>>> df 
    ID value cat 
0 0  20  20 
1 1  43  43 
2 2  45  45 

>>> df.loc[1, "cat"] = np.nan 
>>> df 
    ID value cat 
0 0  20  20 
1 1  43 NaN 
2 2  45  45 

>>> df.fillna(1) 
ValueError: fill value must be in categories 
>>> df.fillna(43) 
    ID value cat 
0 0  20  20 
1 1  43  43 
2 2  45  45 
9

Добавить категорию прежде чем заполнить:

g = g.cat.add_categories([1]) 
g.fillna(1) 
+0

Просто сторона hardt: при использовании непосредственно примененного к кадру данных мне нужно было указать столбец, чтобы он работал: 'g [cat_column_name] = g [cat_column_name] .cat.add_categories ([1])'. И добавленная категория становится самой большой, если категории уже упорядочены. – Gaduks

3

Ваш вопрос отсутствует важный момент, что g является, в частности, что она имеет DTYPE categorical. Я предполагаю, что это что-то вроде этого:

g = pd.Series(["A", "B", "C", np.nan], dtype="category") 

Проблемы вы испытываете что fillna требуется значение уже существующее в категории. Например, g.fillna("A") будет работать, но g.fillna("D") не работает. Чтобы заполнить серию новым значением, вы можете:

g_without_nan = g.cat.add_categories("D").fillna("D") 
Смежные вопросы