1. 程式人生 > >ValueError: fill value must be in categories.

ValueError: fill value must be in categories.

執行下面程式碼時報錯:ValueError: fill value must be in categories

import pandas as pd;
import numpy as np;

df = pd.DataFrame({'a':[1, 2, 3, 4], 'b':['d', 'e', 'f', None]}, dtype='category');
print(df)

df['b'].fillna('k', inplace=True);
print(df)

修正:

import pandas as pd;
import numpy as np;

df = pd.DataFrame({'a'
:[1, 2, 3, 4], 'b':['d', 'e', 'f', None]}, dtype='category'); print(df) df['b'] = df['b'].cat.add_categories(['k']); df['b'].fillna('k', inplace=True); print(df)

原因:
對於資料型別為category的“b”,fillna函式所填充的值需要已經存在於‘b’中。這句話df['b'] = df['b'].cat.add_categories(['k']);表示在’b’列中新添一個類別k。

結束!