我有时希望过滤pandas
多索引+多列帧以关注特定感兴趣的范围,然后访问相关索引以进行下游工作。假设我有以下帧df
(3x索引级别,2x列级别):
Degree Bachelors Masters
Group Black Hispanic Women Black Hispanic Women
CENSUS SOC CIP
foo Unknown 01.0508 0 0 0 0 0 0
0335 3434 01.0599 0 0 0 0 0 0
0335 3434 01.0699 4 2 13 0 0 0
0335 3434 01.0899 14 0 32 0 0 8
0335 3434 01.1099 0 1 9 0 5 10
我可以执行p.loc[(slice(None),'Unknown',slice(None)),:]
过滤到任何等于"未知"的SOC
ID,无论CENSUS
还是CIP
id。< / p>
但是,当我尝试访问此子集的0级索引时,我返回的原始(整个)0级索引为df
:
[In] p.loc[(slice(None),'Unknown',slice(None)),:].index.levels[0]
[Out] Index(['0335,'foo'], dtype='object', name='CENSUS', length=2)
作为当前的解决方法,我将reset_index()
并访问一系列感兴趣的内容(本例中为CENSUS
):
[In] p.loc[(slice(None),'Unknown',slice(None)),:].reset_index().CENSUS.values
[Out] array(['foo'], dtype=object)
是否有更加pythonic的方式来访问过滤的数据框的索引级别值?谢谢。