Изменение порядка столбцов в Pandas: использование метода reindex и метода insert
В этой статье вы узнаете о различных способах изменения порядка столбцов в DataFrame Pandas, включая использование метода .reindex()
для переупорядочивания столбцов.
Оглавление
Загрузка примера DataFrame
Для начала загрузим пример DataFrame, который вы сможете использовать на протяжении всего урока. Для этого урока нам понадобится только библиотека Pandas:
import pandas as pd
df = pd.DataFrame.from_dict(
{
'Name': ['Joan', 'Devi', 'Melissa', 'Dave'],
'Age':[19, 43, 27, 32],
'Gender': ['Female', 'Female', 'Female', 'Male'],
'Education': ['High School', 'College', 'PhD', 'High School'],
'City': ['Atlanta', 'Toronto', 'New York City', 'Madrid']
}
)
print(df)
Изменение порядка столбцов с помощью прямого присваивания
Самый прямой способ изменить порядок столбцов — это использовать прямое присваивание (простите за каламбур!).
Это означает, что вы просто указываете нужный порядок столбцов в виде списка и передаёте его в квадратных скобках при повторном присваивании DataFrame.
В данный момент столбцы нашего DataFrame расположены в следующем порядке: ['Name', 'Age', 'Gender', 'Education', 'City']
.
Предположим, что вы хотите поменять местами столбцы Age
и Gender
. Для этого можно написать следующий код:
df = df[['Name', 'Gender', 'Age', 'Education', 'City']]
print(df)
Ознакомьтесь с другими уроками Python на сайте datagy, включая наше полное руководство по стилизации Pandas и подробный обзор сводных таблиц (Pivot Tables) в Pandas!
Переупорядочивание столбцов с помощью метода Pandas .reindex()
.reindex()
Ещё один способ изменения порядка столбцов — использование метода .reindex()
из Pandas. Он позволяет передать желаемый порядок столбцов через параметр columns=
.
В следующем примере поменяем местами столбцы Education
и City
:
df = df.reindex(columns=['Name', 'Gender', 'Age', 'City', 'Education'])
print(df)
Переупорядочивание столбцов Pandas с помощью метода .insert()
.insert()
Оба вышеуказанных метода предполагают, что вы вручную указываете список столбцов в нужном порядке. Если вы работаете с большим DataFrame, это может быть утомительным и занимать много времени.
Если вы знаете, на какую позицию нужно вставить столбец, метод .insert()
предлагает более удобный способ для этого.
Давайте рассмотрим, как это можно сделать с помощью Python. В следующем примере переместим столбец City
между столбцами Name
и Gender
, чтобы он стал вторым по счёту:
city = df['City']
df = df.drop(columns=['City'])
df.insert(loc=1, column='City', value=city)
print(df)
Давайте кратко разберём, что мы сделали:
Мы сохранили столбец
df['City']
в переменнуюcity
как объект Series.Удалили этот столбец из DataFrame с помощью метода
.drop()
.Затем вставили сохранённый столбец обратно в DataFrame на нужную позицию (в данном случае — первую) под тем же названием
'City'
.
В результате получаем следующий DataFrame:
Name City Gender Age Education
0 Joan Atlanta Female 19 High School
1 Devi Toronto Female 43 College
2 Melissa New York City Female 27 PhD
3 Dave Madrid Male 32 High School
Изменение порядка столбцов с использованием пользовательской функции
Если вам часто приходится перемещать различные столбцы в DataFrame, вы можете оформить вышеописанный метод в виде пользовательской функции.
Давайте посмотрим, как это можно реализовать на Python:
def reorder_columns(dataframe, col_name, position):
"""Перемещает указанный столбец в заданную позицию в DataFrame.
Args:
dataframe (pd.DataFrame): DataFrame для обработки.
col_name (string): Название столбца, который нужно переместить.
position (int): Индекс (начиная с 0), куда нужно переместить столбец.
Returns:
pd.DataFrame: DataFrame с переупорядоченными столбцами.
"""
temp_col = dataframe[col_name]
dataframe = dataframe.drop(columns=[col_name])
dataframe.insert(loc=position, column=col_name, value=temp_col)
return dataframe
# Пример использования (предполагается, что DataFrame 'df' уже определен)
df = reorder_columns(dataframe=df, col_name='Age', position=0)
print(df)
# Возвращает:
# Age Name Age Group Birth City Gender
# 0 23 Jane 18-35 London Female
# 1 45 Melissa 35-50 Paris Female
# 2 35 John 35-50 Toronto Male
# 3 64 Matt 65+ Atlanta Male
Заключение
В этой статье вы узнали, как изменять порядок столбцов в DataFrame Pandas, включая использование методов .reindex()
и .insert()
. В завершение мы рассмотрели пользовательскую функцию, которая поможет вам быстро переупорядочивать столбцы, если эта задача встречается у вас часто.
Если вы хотите узнать больше о методе .reindex()
в Pandas, ознакомьтесь с официальной документацией по этой ссылке.
Дополнительные ресурсы
Чтобы углубить свои знания по смежным темам, ознакомьтесь со следующими материалами:
Добавление пустого столбца в DataFrame Pandas
Last updated