Как изменить порядок столбцов в Pandas DataFrame
Вы можете использовать следующий синтаксис, чтобы быстро изменить порядок столбцов в кадре данных pandas:
df[['column2', 'column3', 'column1']]
В следующих примерах показано, как использовать этот синтаксис со следующими пандами DataFrame:
import pandas as pd #create new DataFrame df = pd.DataFrame() #display DataFrame df points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 5 23 9 5 6 25 9 9 7 29 4 12
Пример 1: изменение порядка столбцов по имени
В следующем коде показано, как изменить порядок столбцов в DataFrame на основе имени:
#change order of columns by name df[['rebounds', 'assists', 'points']] rebounds assists points 0 11 5 25 1 8 7 12 2 10 7 15 3 6 9 14 4 6 12 19 5 5 9 23 6 9 9 25 7 12 4 29
Пример 2: изменение порядка путем добавления нового первого столбца
В следующем коде показано, как изменить порядок столбцов в DataFrame, вставив новый столбец в первую позицию:
#define new column to add steals = [2, 3, 3, 4, 3, 2, 1, 2] #insert new column in first position df.insert (0, 'steals', steals) #display dataFrame df steals points assists rebounds 0 2 25 5 11 1 3 12 7 8 2 3 15 7 10 3 4 14 9 6 4 3 19 12 6 5 2 23 9 5 6 1 25 9 9 7 2 29 4 12
Пример 3: изменение порядка путем добавления нового последнего столбца
В следующем коде показано, как изменить порядок столбцов в DataFrame, вставив новый столбец в последнюю позицию DataFrame:
#define new column to add steals = [2, 3, 3, 4, 3, 2, 1, 2] #insert new column in last position df.insert ( len(df.columns ), 'steals', steals) #display dataFrame df points assists rebounds steals 0 25 5 11 2 1 12 7 8 3 2 15 7 10 3 3 14 9 6 4 4 19 12 6 3 5 23 9 5 2 6 25 9 9 1 7 29 4 12 2
Изменение порядка столбцов в DataFrame Pandas
Вы можете изменить порядок столбцов, вызвав DataFrame.reindex() в исходном DataFrame с измененным списком столбцов в качестве аргумента.
new_dataframe = dataframe.reindex(columns=['a', 'c', 'b'])
Функция reindex() возвращает новый DataFrame с заданным порядком столбцов.
В следующей программе мы возьмем DataFrame со столбцами a, b, c и изменим порядок столбцов на a, c, b.
import pandas as pd #initialize a dataframe df = pd.DataFrame( [[21, 72, 67], [23, 78, 62], [32, 74, 54], [52, 54, 76]], columns=['a', 'b', 'c']) #change order of columns df_new = df.reindex(columns=['a', 'c', 'b']) #print new dataframe print(df_new)
a c b 0 21 67 72 1 23 62 78 2 32 54 74 3 52 76 54
Метод 2: использование индексации
Индексирование DataFrame может использоваться для изменения порядка столбцов в данном DataFrame.
Ниже приведен синтаксис для использования индексации DataFrame.
new_dataframe = dataframe[['a', 'c', 'b']]
В следующей программе мы возьмем DataFrame со столбцами a, b, c и изменим порядок столбцов на a, c, b.
import pandas as pd #initialize a dataframe df = pd.DataFrame( [[21, 72, 67], [23, 78, 62], [32, 74, 54], [52, 54, 76]], columns=['a', 'b', 'c']) #change order of columns df_new = df[['a', 'c', 'b']] #print new dataframe print(df_new)
a c b 0 21 67 72 1 23 62 78 2 32 54 74 3 52 76 54
Метод 3: использование конструктора
Вы также можете использовать конструктор DataFrame, чтобы изменить порядок столбцов. Создайте существующий DataFrame необработанными данными и создайте новый DataFrame с этими необработанными данными и желаемым порядком столбцов.
Ниже приведен синтаксис для создания DataFrame с обновленным порядком столбцов.
new_dataframe = pd.dataframe(raw_data, index=['a', 'c', 'b'])
В следующей программе мы возьмем DataFrame со столбцами a, b, c и изменим порядок столбцов на a, c, b.
import pandas as pd #initialize a dataframe df = pd.DataFrame( [[21, 72, 67], [23, 78, 62], [32, 74, 54], [52, 54, 76]], columns=['a', 'b', 'c']) #change order of columns df_new = pd.DataFrame(df, columns=['a', 'c', 'b']) #print new dataframe print(df_new)
a c b 0 21 67 72 1 23 62 78 2 32 54 74 3 52 76 54
В этом руководстве по Python мы узнали, как изменить порядок столбцов в DataFrame.
Как поменять местами два столбца в Pandas (с примером)
Вы можете использовать следующую пользовательскую функцию, чтобы поменять местами два столбца в кадре данных pandas:
def swap_columns (df, col1, col2): col_list = list(df.columns ) x, y = col_list. index (col1), col_list. index (col2) col_list[y], col_list[x] = col_list[x], col_list[y] df = df[col_list] return df
Эта функция поменяет местами столбцы col1 и col2 в DataFrame.
В следующем примере показано, как использовать эту функцию на практике.
Пример: поменять местами два столбца в Pandas
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7 H 28 4 12
Мы можем определить функцию swap_columns() , чтобы поменять местами столбцы «точки» и «отскоки»:
#define function to swap columns def swap_columns (df, col1, col2): col_list = list(df.columns ) x, y = col_list. index (col1), col_list. index (col2) col_list[y], col_list[x] = col_list[x], col_list[y] df = df[col_list] return df #swap points and rebounds columns df = swap_columns (df, 'points', 'rebounds'): #view updated DataFrame print(df) team rebounds assists points 0 A 11 5 18 1 B 8 7 22 2 C 10 7 19 3 D 6 9 14 4 E 6 12 14 5 F 5 9 11 6 G 9 9 20 7 H 12 4 28
Обратите внимание, что столбцы «очки» и «подборы» поменялись местами, в то время как все остальные столбцы остались на прежнем месте.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Изменение порядка столбцов в DataFrame
В работе с библиотекой pandas и ее основным объектом DataFrame часто возникает необходимость изменить порядок столбцов. Например, после создания нового столбца его часто требуется переместить на первое место в DataFrame, не изменяя порядка остальных столбцов.
Пример создания DataFrame
import numpy as np import pandas as pd # Создаем DataFrame из случайных чисел df = pd.DataFrame(np.random.rand(10, 5)) # Добавляем новый столбец df['mean'] = df.mean(1)
В результате получается DataFrame с шестью столбцами. Новый столбец mean , содержащий средние значения, добавляется в конец DataFrame.
Изменение порядка столбцов
Для изменения порядка столбцов есть несколько способов. Один из них — использовать метод insert у объекта DataFrame.
# Вначале удаляем столбец 'mean' mean = df['mean'] df = df.drop('mean', axis=1) # Затем вставляем его на первое место df.insert(0, 'mean', mean)
В результате столбец mean переместится на первое место, а все остальные столбцы останутся на своих местах.
Таким образом, для изменения порядка столбцов в DataFrame можно использовать метод insert , который позволяет вставить столбец на нужное место. Нужно помнить, что перед этим столбец необходимо удалить из DataFrame методом drop .