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

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

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

  1. 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

  1. x = pd.Categorical(
  2. ["Hi", "Lo", "Med", "Zer", "Lo", "Zer", "Lo", "Hi"],
  3. categories=["Zer", "Lo", "Med", "Hi"],
  4. ordered=True,
  5. )
  6. print(x.codes[0] > x.codes[1])

图纸:

  1. True
hmtdttj4

hmtdttj42#

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

  1. type(x[0])
  2. # str

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

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

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

相关问题