如何移除Pandas分组结果中的NaN及多余类别?
问题原因
diamonds数据集的cut列是分类(Categorical)数据类型,这类数据会预先固定所有可能的类别选项。你过滤数据只是筛选出了符合条件的行,但原始的分类类别集合并没有被修改,所以分组时依然会列出所有原始类别,没有对应数据的类别自然就返回NaN。
解决方法
有三种常用的处理方式:
方法1:分组时添加observed=True参数
直接在groupby里指定该参数,只保留有实际数据的类别:
ideal_good.groupby("cut", observed=True)["price"].mean()
方法2:清理分类列中未使用的类别
先对cut列移除没有数据的类别,再执行分组:
ideal_good["cut"] = ideal_good["cut"].cat.remove_unused_categories() ideal_good.groupby("cut")["price"].mean()
方法3:将分类列转为普通字符串类型
把cut列转换为字符串类型,这样就不会保留原始的分类集合:
ideal_good["cut"] = ideal_good["cut"].astype(str) ideal_good.groupby("cut")["price"].mean()
内容的提问来源于stack exchange,提问作者Rizzle
相关产品推荐
相关产品推荐

