Pandas中有序范畴类型之间的比较未按预期工作

6pp0gazn  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(88)

下面的代码:

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"类型大,这与我创建类别时设置的顺序一致,但当我在比较中检查这一点时,结果正好相反:
第一个月
产生以下结果:

False

为什么会这样呢?

oyt4ldly

oyt4ldly1#

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

相关问题