在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?如何根据分类变量的有序分类比较它们的两个元素?
x[0] > x[1]
False
knpiaxh11#
您可以比较codes:
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
hmtdttj42#
一旦你对一个项目进行切片,你就回到了一个python字符串,并丢失了所有关于订单的信息:
type(x[0]) # str
要进行有效的比较,您需要保持为数组:
x[[0]]>x[[1]] # array([ True])
当使用pandas/numpy时,你通常希望执行向量操作,即一次处理多个项目/比较。
2条答案
按热度按时间knpiaxh11#
您可以比较
codes
:图纸:
hmtdttj42#
一旦你对一个项目进行切片,你就回到了一个python字符串,并丢失了所有关于订单的信息:
要进行有效的比较,您需要保持为数组:
当使用pandas/numpy时,你通常希望执行向量操作,即一次处理多个项目/比较。