繁体   English   中英

Pandas 中有序分类类型的比较未按预期工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM