2015-01-11 3 views
0

Я играл с данными, которые у меня были с глубоким мультииндексисом, только с одним столбцом «значение». Я удалил некоторые строки, которые были плохими данными, но потом возникли проблемы с индексированием ... Любые идеи?ошибка при удалении строк из pandas multindex?

инициализировать пример dataframe (не мои данные):

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'))] 

В этом удаляется только «два гр ':

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: "метка [а] не в [столбцов]

Даже страннее -

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

это прекрасно.

Я использую новейшую анаконду, поэтому панды 0.14.1 Мысли?

ответ

1

увидеть документы here

вы нарушаете использование IndexSlice - это четко объяснено в окне предупреждения

+0

упс хороший улов – queryous

Смежные вопросы