В следующем 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"
, а не только те, которые мне нужны.
Предполагая, что ваш фреймворк называется 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
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)