首页 > 解决方案 > 如何对多索引系列进行切片

问题描述

我正在创建一个这样的多索引系列:

  index = [ ('America','California', 2000), ('America','California', 2010),
          ('Asia','Delhi', 2000), ('Asia','Delhi', 2010),
          ('Asia','HK', 2000), ('Asia','HK', 2010),
          ('America','Texas', 2000), ('America','Texas', 2010)
        ]

populations = [33871648, 37253956,18976457, 19378102,30861820, 35145561,20851820, 25145561]

new_index =  pd.MultiIndex.from_tuples(index)
pop = pd.Series(populations, index=new_index).sort_index()

我正在尝试检索这样的值:

pop['America'] # works
pop['America','Texas',2010] # works
pop['America','Texas'] # works

除了 2010 年之外,如何前往美国,任何城市?

pop['America',:,2010] # not working

在这种情况下如何使用切片?

标签: pythonpandasmulti-index

解决方案


采用:

idx = pd.IndexSlice
print (pop.loc[idx['America',:,2010]])
America  California  2010    37253956
         Texas       2010    25145561
dtype: int64

或者:

print (pop.loc['America',slice(None),2010])
America  California  2010    37253956
         Texas       2010    25145561
dtype: int64

推荐阅读