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
- 正如你所说的),你可以用字典来做到这一点
假设我有这样的数据框,并且 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
- 正如你所说的),你可以用字典来做到这一点