Как сбросить индекс на pandas фрейм данных, вставив результирующий столбец в указанную c позицию? - PullRequest
0 голосов
/ 06 августа 2020

Как сохранить порядок столбцов после операций с индексом?

>>> df = pd.DataFrame({'a' : [0,1], 'b' : [0,1], 'c' : [0,1]})
>>> df.columns
Index(['a', 'b', 'c'], dtype='object')
>>> df = df.set_index('c')
# some filtering operation
>>> df = df.reset_index()
>>> df.columns
Index(['c', 'a', 'b'], dtype='object')

После сброса индекса порядок столбцов будет ['c', 'a', 'b'] вместо предыдущего [' a ',' b ',' c '] Есть ли способ сбросить_index, указав, где я хочу вставить столбец?

Я знаю, что могу использовать pd.reindex(column_names), но мне интересно, есть ли более быстрый способ сделать это

Это может пригодиться, поскольку я часто использую какой-либо столбец в качестве индекса, когда намереваюсь выполнить фильтрацию по указанному столбцу, и мне нужно сбросить индекс перед записью результатов в файл .csv. Порядок столбцов фиксированный.

1 Ответ

1 голос
/ 06 августа 2020

Один из способов - сохранить столбцы исходного порядка в переменной, а затем использовать эту переменную для назначения после сброса индекса. Взгляните на приведенный ниже код.

df = pd.DataFrame({'a' : [0,1], 'b' : [0,1], 'c' : [0,1]})
print('Before reset index:', df.columns)

col = df.columns   # assign columns

df = df.set_index('c')
df = df.reset_index()

# get same order columns
df = df[col]
print('\nAfter reset index:', df.columns)

См. Снимок ниже для вывода.

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...