Pandas DataFrame Добавить столбец в индекс без сброса - программирование
Подтвердить что ты не робот

Pandas DataFrame Добавить столбец в индекс без сброса

как мне добавить 'd' в индекс ниже, не имея перед ним reset?

from pandas import DataFrame
df = DataFrame( {'a': range(6), 'b': range(6), 'c': range(6)} )
df.set_index(['a','b'], inplace=True)
df['d'] = range(6)

# how do I set index to 'a b d' without having to reset it first?
df.reset_index(['a','b','d'], inplace=True)
df.set_index(['a','b','d'], inplace=True)

df
4b9b3361

Ответ 1

Мы добавили опцию append в set_index. Попробуйте это.

Команда:

df.set_index(['d'], append=True)

(нам не нужно указывать ['a', 'b'], поскольку они уже находятся в индексе, и мы добавляем к ним)

Ответ 2

Ваш код недействителен, reset_index не имеет аргумента inplace в моей версии pandas (0.8.1). Ниже вы получите то, что хотите, но, возможно, более элегантный способ, но вы не указали достаточно информации о том, почему вы избегаете reset_index.

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)])

НТН