Pandas: 分类转数字时如何处理nan值

Pandas: how to deal with nan value when convert categories to numbers

假设我有这样的数据框,并且 favorite_food 列中有大量分类值(大约 100 个),其中包括 nan 值:

Name | favorite_food
Anna  | apple
Barbara | banana
Charlie | apple
Danie | nan
Emily | nan
............
</pre>

我的目标是像这样将分类值转换为数字:

Name | favorite_food
Anna  | 1
Barbara | 2
Charlie | 1
Danie | 0
Emily | 0
............
</pre>

那么我该如何修改这段代码df.favorite_food =df.favorite_food.astype('category')? 或者还有其他方法吗?

根据this link,缺失值的默认分配是-1,这可以通过.cat.codes

实现

对于给定的案例,您可以使用 df.favorite_food =df.favorite_food.cat.codes,这会将 np.nan 值映射到 -1

如果你想定义一个特定的映射(np.nan = 0- 正如你所说的),你可以用字典来做到这一点