Pandas fillna 抛出 ValueError:填充值必须在类别中

新手上路,请多包涵

描述:这两个特征都是分类数据类型。我在同一日期集的不同内核中使用此代码工作正常,唯一的区别是功能在 flote64 中。后来我将这些特征 dtypes 转换为分类,因为数据集中的所有特征都代表类别。

下面是代码:

 AM_train['product_category_2'].fillna('Unknown', inplace =True)
AM_train['city_development_index'].fillna('Missing', inplace =True)

原文由 Ravi Varma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 496
2 个回答

首先使用 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)

样本

 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

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

在尝试摆脱所有 NaN 时,我在数据框中遇到了同样的错误。

我没有看太多,但是用 .fillna() 代替 .replace(np.nan, value) 就成功了。

谨慎使用,因为我不确定 np.nan 捕获所有解释为 NaN 的值

原文由 lotrus28 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题