熊猫fillna引发ValueError:填充值必须在类别中

Rav*_*rma 5 python dataframe pandas fillna

说明:两种功能均属于类别dtypes。而且我在同一日期集的另一个内核中使用了此代码,效果很好,唯一的区别是功能在flote64中。后来我将这些特征dtypes转换为Categorical,因为数据集中的所有特征都代表类别。

下面是代码:

AM_train['product_category_2'].fillna('Unknown', inplace =True)
AM_train['city_development_index'].fillna('Missing', inplace =True)
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

使用Series.cat.add_categories了添加类别第一:

AM_train['product_category_2'] = AM_train['product_category_2'].cat.add_categories('Unknown')
AM_train['product_category_2'].fillna('Unknown', inplace =True) 

AM_train['city_development_index'] = AM_train['city_development_index'].cat.add_categories('Missing')
AM_train['city_development_index'].fillna('Missing', inplace =True)
Run Code Online (Sandbox Code Playgroud)

样品

AM_train = pd.DataFrame({'product_category_2': pd.Categorical(['a','b',np.nan])})
AM_train['product_category_2'] = AM_train['product_category_2'].cat.add_categories('Unknown')
AM_train['product_category_2'].fillna('Unknown', inplace =True) 

print (AM_train)
  product_category_2
0                  a
1                  b
2            Unknown
Run Code Online (Sandbox Code Playgroud)