FutureWarning:不推荐在.astype()中指定'categories'或'ordered';传递一个CategoricalDtype

时间:2017-11-28 17:44:46

标签: python pandas

标题中的警告由Python 3.6.3上的pandas 0.21.0生成,代码如pd.Series(["a", "b", "b"]).astype("category", categories = ["a", "b", "c"])。现在应该怎么写这个呢?

2 个答案:

答案 0 :(得分:13)

警告中提到的CategoricalDtypepd.api.types.CategoricalDtype的形式提供。所以,你可以写pd.Series(["a", "b", "b"]).astype(pd.api.types.CategoricalDtype(categories = ["a", "b", "c"]))

答案 1 :(得分:1)

pd.Categorical(pd.Series(['a','b','b']), categories = ['a', 'b', 'c'])

您还可以使用有序参数创建分类层次

result = pd.Categorical(pd.Series(['a','b','b']), categories = ['a', 'b', 'c'], ordered = True)

更新以转换为Series dtype

pd.Series(result)