Заменить значение в MultiIndex (панды)

1

В следующем DataFrame: как заменить ["x2", "Total"] на ["x2", "x2"], оставив x1 как есть?

l1           900    902    912     913    916     
l2           ИП ПС  ИП ПС  ИП  ПС  ИП ПС  ИП ПС  
i1    i2                                      
x1    Total  10  6   3  3  10  16   2  9   3  8  
x2    Total   1  0   0  0   0   0   0  0   0  0  

.rename заменит все значения "Total", а не только те, которые мне нужны.

Теги:
pandas
dataframe
multi-index

1 ответ

1
Лучший ответ

Предполагая, что ваш фреймворк называется df, следующий код выполнит вашу желаемую замену, заменив существующий индекс на модифицированный индекс.

index = df.index
names = index.names
index = df.index.tolist()[:1]+[('x2','x2')]  
df.index = pd.MultiIndex.from_tuples(index, names = names)

Или вы можете напрямую изменить внутренний уровень индекса:

df.index.set_levels([u'Total', u'x2'],level=1,inplace=True)
df.index.set_labels([0, 1],level=1,inplace=True)

Вы также можете использовать level='i2' вместо level=1

  • 0
    Я использовал 1-й способ: cis_i, ind_l = np.where(t.index.get_level_values("i1")=="x2")[0][0], t.index.tolist() t.index = pd.MultiIndex.from_tuples(ind_l[:cis_i]+[("x2","x2")]+ind_l[cis_i+1:], names=t.index.names)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню