pandas 0.16.1 我将数据帧中的所有列转换为分类,因此在转储到磁盘时占用的空间会减少很多。现在我想过滤数据帧。对于==和.isin没关系,但是<,< =等等的操作失败。"无序分类的操作只能比较是否相等"
data[data["MONTH COLUMN"]<=3]
如果我在categorical.py中注释掉以下几行,一切正常。它是熊猫中的一个错误吗?
if not self.ordered:
if op in ['__lt__', '__gt__','__le__','__ge__']:
raise TypeError("Unordered Categoricals can only compare equality or not")
我认为在列上使用Categorical数据类型是个好主意,该列在〜1&#39; 400&#39; 000行中只有12个唯一值。)
答案 0 :(得分:4)
注意不会自动订购新的分类数据。您必须明确传递ordered = True以表示已订购的分类。
首次创建要订购的类别时,只需指定:
In [1]: import pandas as pd
In [3]: s = pd.Series(["a","b","c","a"]).astype('category', ordered=True)
In [5]: s
Out[5]:
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a < b < c]
In [4]: s > 'a'
Out[4]:
0 False
1 True
2 True
3 False
dtype: bool