基本上,我有一个带有不方便的有序类别字段的熊猫数据框,我什至可能不知道什么是类别值,我只是知道它是有序的,并且类别中有三个值:
import pandas as pd
dfs = pd.DataFrame({'C1': pd.Categorical(list('abbacabac'), categories=['a', 'b', 'c'], ordered=True), 'C2': [1,2,3,4,5,6,7,8,9]})
例如,我可以通过执行以下操作获得第二类中的所有项目:
df1 = dfs[dfs.C1 == 'b']
但是我什至可能都不知道类别是什么,或者它们可能真的很不方便输入。 考虑到示例中的类别是有序的,是否有一种简单的方法来按顺序获取具有第二个类别的商品,例如
df1 = dfs[dfs.C1.category_order == 1]
?
答案 0 :(得分:1)
使用cat.categories
并通过建立索引进行选择:
dfs = dfs[dfs.C1 == dfs.C1.cat.categories[1]]
print (dfs)
C1 C2
1 b 2
2 b 3
6 b 7