[英]Comparison between ordered categorical type in Pandas not working as expected
以下代码:
s2 = pd.Series(['m','l','s','xl','xs'])
size_type = pd.api.types.CategoricalDtype(categories =['xs','s','m','l','xl'], ordered = True)
s3 = s2.astype(size_type)
print(s3)
产生这个结果:
0 m
1 l
2 s
3 xl
4 xs
dtype: category
Categories (5, object): ['xs' < 's' < 'm' < 'l' < 'xl']
所以我希望“m”类型比“s”类型大,这与我创建类别时设置的顺序一致。 但是当我在比较中检查这个时,结果是相反的:
s3[0] > s3[2]
产生这个结果:
False
为什么会这样?
s3[0]
和s3[2]
返回字符串,不按类别代码排序,可以使用.cat.codes
访问内部存储的代码进行比较:
s3.cat.codes[0] > s3.cat.codes[2]
# True
详细查看.cat.codes
:
s3.cat.codes
#0 2
#1 3
#2 1
#3 4
#4 0
#dtype: int8
s3.cat.codes[0]
#2
s3.cat.codes[2]
#1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.