我正在使用pandas 0.24.2,并且无法对Categorical
实例执行简单的相等性测试。例如,使用以下代码:
d = DataFrame({"x" : [1, 2, 3, 4]})
d["y"] = pd.cut(d["x"], bins=3)
d
的内容现在是:
x y
0 1 (0.997, 2.0]
1 2 (0.997, 2.0]
2 3 (2.0, 3.0]
3 4 (3.0, 4.0]
但是,我无法测试y
与字符串值是否相等,例如:
d["y"] == '(3.0, 4.0]'
产生:
0 False
1 False
2 False
3 False
Name: y, dtype: bool
由于cut()
的输出,我知道y
的基础类型是Categorical
。但是,我在Categorical
中找不到任何用于平等的特殊方法。此外,该文档甚至声明“平等比较适用于…标量”。我的方法中缺少什么?
答案 0 :(得分:4)
这是间隔,因此请传递到pd.Interval
d.y==pd.Interval(3,4)
Out[255]:
0 False
1 False
2 False
3 True
Name: y, dtype: bool
答案 1 :(得分:2)
或者,您也可以将数据类型强制转换为“字符串”:
d["y"].astype(str) == "(3.0, 4.0]"
输出:
0 False
1 False
2 False
3 True
Name: y, dtype: bool