Как преобразовать индекс DataFrame в колонку в pandas?
Как преобразовать индекс датафрейма в столбец?
У меня есть датафрейм, который выглядит следующим образом:
gi ptt_loc
0 384444683 593
1 384444684 594
2 384444686 596
и мне нужно преобразовать его в следующий формат:
index1 gi ptt_loc
0 0 384444683 593
1 1 384444684 594
2 2 384444686 596
Подскажите, как можно это сделать с использованием Python и библиотеки pandas?
4 ответ(ов)
Для извлечения подиндекса в MultiIndex вы можете использовать следующий код:
df['si_name'] = R.index.get_level_values('si_name')
где si_name
— это имя подиндекса. Убедитесь, что в вашем MultiIndex действительно присутствует уровень с таким именем.
Если вы хотите использовать метод reset_index
и при этом сохранить существующий индекс, вы можете сделать это следующим образом:
df.reset_index().set_index('index', drop=False)
Если вы предпочитаете выполнить это изменение на месте, используйте:
df.reset_index(inplace=True)
df.set_index('index', drop=False, inplace=True)
Например:
print(df)
gi ptt_loc
0 384444683 593
4 384444684 594
9 384444686 596
После выполнения reset_index
:
print(df.reset_index())
index gi ptt_loc
0 0 384444683 593
1 4 384444684 594
2 9 384444686 596
Если вы используете reset_index
и затем set_index
:
print(df.reset_index().set_index('index', drop=False))
index gi ptt_loc
index
0 0 384444683 593
4 4 384444684 594
9 9 384444686 596
Если вы хотите избавиться от метки индекса, вы можете сделать следующее:
df2 = df.reset_index().set_index('index', drop=False)
df2.index.name = None
print(df2)
index gi ptt_loc
0 0 384444683 593
4 4 384444684 594
9 9 384444686 596
Таким образом, вы сохраняете исходный индекс и можете легко управлять его отображением.
Вы можете добавить индекс DataFrame в качестве нового столбца с помощью метода insert
. Вот как это делается:
import pandas as pd
# Создаем DataFrame
df1 = pd.DataFrame({"gi": [232, 66, 34, 43], "ptt": [342, 56, 662, 123]})
# Получаем значения индекса
p = df1.index.values
# Вставляем новый столбец с индексом в начало DataFrame
df1.insert(0, column="new", value=p)
# Отображаем результат
print(df1)
После выполнения данного кода, ваш DataFrame будет выглядеть следующим образом:
new gi ptt
0 0 232 342
1 1 66 56
2 2 34 662
3 3 43 123
Таким образом, вы успешно добавили новый столбец, содержащий значения индекса, к существующему DataFrame.
Я обычно делаю это следующим образом:
df = df.assign(index1=df.index)
Как изменить порядок столбцов в DataFrame?
Как удалить строки DataFrame в Pandas с NaN в определённом столбце
Выбор нескольких колонок в DataFrame Pandas
Как получить значение из ячейки датафрейма?
Объединение двух столбцов текста в DataFrame pandas