Pandas Categorical列掩码筛选:如何简洁提取指定类别子集
解决Categorical列的简洁筛选问题
嘿,完全懂你这种想用简洁写法却被逼用冗长代码的烦躁!别再折腾那些cat.codes和索引查找了,Pandas的Categorical类型本身就支持直接用类别标签做筛选,给你几种优雅的实现方式:
最直观的直接比较法:Categorical列可以直接和字符串标签用
==做比较,这是最简洁的写法:df_a = df[df['mycol'] == 'a']如果你习惯用
.loc来明确行索引选择(更推荐,可读性更强),可以写成:df_a = df.loc[df['mycol'] == 'a']多类别兼容的isin方法:如果之后需要同时筛选多个类别(比如'a'和'b'),
isin()会更灵活,单类别场景下也能用:df_a = df[df['mycol'].isin(['a'])]
另外提一句,你之前写的df.mycol.equal('a')其实是语法错误,正确的方法是df.mycol.eq('a'),不过即使这样,也不如直接用==来得直观。
Pandas设计Categorical类型的初衷就是让你能直接用语义化的标签操作,底层的编码映射会自动处理,完全不需要手动去转换编码再匹配索引~
内容的提问来源于stack exchange,提问作者user27886
相关产品推荐
相关产品推荐

