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

Comparing two elements of a categorical variable according to their ordered categorization

提问人:quesadagranja 提问时间:10/9/2023 更新时间:10/9/2023 访问量:38

问:

在 Python 中,我创建了一个分类变量,如下所示:

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

我想将元素 0 与元素 1 进行比较。原则上,“Hi”大于“Lo”。为什么我打字时会得到?Falsex[0] > x[1]

如何根据分类变量的两个元素的有序分类进行比较?

python pandas 分类数据

评论

0赞 sammywemmy 10/9/2023
您正在从熊猫的类别中走出来,进入原始值。下面的解决方案提供商是处理标量比较的一种方法

答:

2赞 Andrej Kesely 10/9/2023 #1

您可以比较代码

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
1赞 mozway 10/9/2023 #2

一旦你切片了单个项目,你就会回到一个 python 字符串,并丢失所有订单信息:

type(x[0])
# str

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

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

使用 pandas/numpy 时,您通常希望执行矢量运算,即一次处理多个项目/比较。