Как обновить уровни MultiIndex панд после разрезания его DataFrame?Python

Программы на Python
Ответить
Anonymous
 Как обновить уровни MultiIndex панд после разрезания его DataFrame?

Сообщение Anonymous »

У меня есть Dataframe с MultiIndex панд:

Код: Выделить всё

In [1]: import pandas as pd

In [2]: multi_index = pd.MultiIndex.from_product(
...:     [['CAN', 'USA'], ['total']],
...:     names=['country', 'sex'])

In [3]: df = pd.DataFrame({'pop': [35, 318]}, index=multi_index)

In [4]: df
Out[4]:
pop
country sex
CAN     total   35
USA     total  318
Затем я удаляю несколько строк из этого DataFrame:

Код: Выделить всё

In [5]: df = df.query('pop > 100')

In [6]: df
Out[6]:
pop
country sex
USA     total  318
Но когда я сверяюсь с MutliIndex, на его уровнях все еще присутствуют обе страны.

Код: Выделить всё

In [7]: df.index.levels[0]
Out[7]: Index([u'CAN', u'USA'], dtype='object')
Я могу исправить это сам довольно странным способом:

Код: Выделить всё

In [8]: idx_names = df.index.names

In [9]: df = df.reset_index(drop=False)

In [10]: df = df.set_index(idx_names)

In [11]: df
Out[11]:
pop
country sex
USA     total  318

In [12]: df.index.levels[0]
Out[12]: Index([u'USA'], dtype='object')
Но это кажется довольно запутанным. Есть ли лучший способ, который я упускаю?

Подробнее здесь: https://stackoverflow.com/questions/287 ... -dataframe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»