从pandas multiindex中删除行时的错误?

时间:2015-01-11 02:19:18

标签: pandas indexing

我正在玩我拥有的数据,这是一个只有一个“值”列的深度多索引。我删除了一些不良数据的行,但后来却无法编制索引...有什么想法吗?

初始化示例数据帧(不是我的数据):

m=pd.MultiIndex.from_product(
    [sorted(i) for i in [['one','two'],'abcd']],
    names=['nums','lets'])
df1=pd.DataFrame(np.random.randn(len(m)),index=m)

创建

nums lets          
one  a     0.433026
     b     1.203037
     c    -0.965066
     d     1.028274
two  a     0.228630
     b     0.445138
     c    -1.136602
     d     0.135137

后跟(删除不良数据)

df2=df1.loc[
    ~((df1.index.get_level_values('nums')=='two')
    &(df1.index.get_level_values('lets')=='c'))]

这只会删除'two c':

nums lets          
one  a     0.433026
     b     1.203037
     c    -0.965066
     d     1.028274
two  a     0.228630
     b     0.445138
     d     0.135137

这里事情开始变得越来越糟糕。

df2.loc[pd.IndexSlice[:,'c']]

失败,这是令人讨厌和意外但是没关系。 但那为什么呢

df2.loc[pd.IndexSlice[:,'a']]

失败?返回的错误是 KeyError:'标签[a]不在[columns]'

甚至更奇怪 -

df2.loc[pd.IndexSlice['two','a']]

非常好。

我正在使用最新的蟒蛇大熊猫0.14.1 想法?

1 个答案:

答案 0 :(得分:1)

查看文档here

您违反了IndexSlice的使用 - 警告框中明确说明了这一点