pandas 根据分类变量的有序分类比较分类变量的两个元素

mgdq6dx1  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(91)

在Python中,我创建了一个像这样的分类变量:

x = pd.Categorical(["Hi", "Lo", "Med", "Zer", "Lo", "Zer", "Lo", "Hi"], categories = ["Zer", "Lo", "Med", "Hi"], ordered=True)

我想比较元素0和元素1。原则上,“Hi”大于“Lo”。为什么我输入x[0] > x[1]时得到False
如何根据分类变量的有序分类比较它们的两个元素?

knpiaxh1

knpiaxh11#

您可以比较codes

x = pd.Categorical(
    ["Hi", "Lo", "Med", "Zer", "Lo", "Zer", "Lo", "Hi"],
    categories=["Zer", "Lo", "Med", "Hi"],
    ordered=True,
)

print(x.codes[0] > x.codes[1])

图纸:

True
hmtdttj4

hmtdttj42#

一旦你对一个项目进行切片,你就回到了一个python字符串,并丢失了所有关于订单的信息:

type(x[0])
# str

要进行有效的比较,您需要保持为数组:

x[[0]]>x[[1]]
# array([ True])

当使用pandas/numpy时,你通常希望执行向量操作,即一次处理多个项目/比较。

相关问题