这真是微不足道但不能相信我已经闲逛了一个小时仍然可以找到答案,所以你在这里:
df = pd.DataFrame({"cats":["a","b"], "vals":[1,2]})
df.cats = df.cats.astype("category")
df
我的问题是如何选择其“猫”列的类别为“a”的行。我知道df.loc[df.cats == "a"]
会起作用,但它基于元素的相等性。有没有办法根据类别水平进行选择?
这有效:
df.cats[df.cats=='a']
UPDATE
问题已更新。新解决方案:
df[df.cats.cat.categories == ['a']]
您可以使用df.cats.cat.categories
查询分类列表,将输出打印为
Index(['a', 'b'], dtype='object')
对于这种情况,要选择'a'
类别为df.cats.cat.categories['0']
的行,您只需使用:
df[df.cats == df.cats.cat.categories[0]]
df[df.cats.cat.categories == df.cats.cat.categories[0]]