# Перемещение столбца DataFrame Pandas на позицию (В начало и в конец)

Быть способным работать и манипулировать объектами DataFrame в Pandas является необходимым навыком для каждого, кто работает в области анализа данных или науки о данных. Поскольку Pandas становится вездесущим инструментом для аналитиков данных, важно уметь подготавливать DataFrame к презентации. В этом уроке \*\*вы научитесь использовать Pandas для перемещения столбца DataFrame на конкретную позицию, например, в начало или конец

К окончанию этого урока вы научитесь следующему:

* Как переместить столбец Pandas DataFrame **на передний план**
* Как переместить столбец DataFrame Pandas **в конец**
* Как переместить столбец DataFrame Pandas **в определенную позицию**

Оглавление

* [Загрузка образца DataFrame Pandas](#zagruzka-obrazca-dataframe-pandas)
* [Понимание методов pop и Insert в Pandas](#ponimanie-metodov-pop-i-insert-v-pandas)
* [Как переместить столбец DataFrame Pandas на передний план](#kak-peremestit-stolbec-dataframe-pandas-na-perednii-plan)
* [Как переместить столбец DataFrame Pandas в конец](#kak-peremestit-stolbec-dataframe-pandas-v-konec)
* [Как переместить столбец DataFrame Pandas в определенную позицию](#kak-peremestit-stolbec-dataframe-pandas-v-opredelennuyu-poziciyu)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Загрузка образца DataFrame Pandas

Для целей этого учебника давайте загрузим образцовый DataFrame в Pandas. DataFrame будет намеренно простым и будет использовать нумерованные столбцы, чтобы вы могли хорошо понять, как изменяется позиция столбцов.

```python
# Loading a Sample Pandas DataFrame
import pandas as pd

values = {i: [i] * 3 for i in range(4)}
df = pd.DataFrame(values)
print(df)

# Returns:
#    0  1  2  3
# 0  0  1  2  3
# 1  0  1  2  3
# 2  0  1  2  3
```

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

### Понимание методов pop и Insert в Pandas

Рассмотрим, как переместить столбец DataFrame Pandas с помощью методов `.pop()` и `.insert()`:

| Цель            | Перемещение столбца DataFrame Pandas                     |
| --------------- | -------------------------------------------------------- |
| pop() method    | Извлечение столбца DataFrame Pandas                      |
| insert() method | Вставьте столбец Pandas DataFrame в определенную позицию |

Метод `.pop()` в Pandas принимает в качестве аргумента метку столбца. Этот метод удаляет столбец из DataFrame и возвращает его.

Метод `.insert()` в Pandas принимает позицию, метку столбца и значения для вставки в качестве своих аргументов. Если это пока кажется непонятным, не беспокойтесь! Как только мы рассмотрим несколько примеров, все станет ясно.

### Как переместить столбец DataFrame Pandas на передний план

**Как переместить столбец DataFrame Pandas вперед?**

Чтобы переместить столбец DataFrame Pandas в начало DataFrame, сначала извлеките столбец с помощью метода `.pop()`, а затем вставьте его на позицию 0 с помощью метода `.insert()`

Давайте рассмотрим пример, где мы перемещаем третий столбец в начало DataFrame:

```python
# Move a Pandas Column to the Front
import pandas as pd

values = {i: [i] * 3 for i in range(4)}
df = pd.DataFrame(values)

col2 = df.pop(2)
df.insert(0, '2', col2)

print(df)

# Returns:
#    2  0  1  3
# 0  2  0  1  3
# 1  2  0  1  3
# 2  2  0  1  3
```

Давайте разберемся, как можно переместить столбец вперед:

1. Мы используем метод `.pop()` для извлечения колонки 2 из DataFrame и присваиваем колонку `col2` к Series.
2. Затем мы используем метод `.insert()` для вставки Series на позицию 0 с меткой `'2'`

Мы можем упростить этот процесс до одной строки кода, объединив две операции вместе, как показано ниже:

```python
# Simplifying our code above
import pandas as pd

values = {i: [i] * 3 for i in range(4)}
df = pd.DataFrame(values)

df.insert(0, '2', df.pop(2))
print(df)

# Returns:
#    2  0  1  3
# 0  2  0  1  3
# 1  2  0  1  3
# 2  2  0  1  3
```

В приведенном выше коде мы избегаем необходимости использовать метод `.pop()` отдельно. Поскольку операция выполняется на месте, мы можем напрямую использовать этот метод при вызове метода.

В следующем разделе вы узнаете, как переместить столбец DataFrame Pandas на последнюю позицию.

### Как переместить столбец DataFrame Pandas в конец

Чтобы переместить столбец DataFrame в последнюю позицию DataFrame, мы можем воспользоваться процессом, очень похожим на описанный выше. Мы снова воспользуемся методами `.pop()` и `.insert()`

При использовании метода `.pop()` DataFrame действительно временно теряет один из столбцов. Поэтому нам необходимо быть внимательными к тому, куда мы вставляем столбец. К счастью, мы можем подсчитать количество столбцов и просто вставить его, используя функцию `len()`

Давайте посмотрим, как мы можем переместить первый столбец в конец DataFrame.

```python
# Move a Column to the End of the DataFrame
import pandas as pd

values = {i: [i] * 3 for i in range(4)}
df = pd.DataFrame(values)

col0 = df.pop(0)
df.insert(len(df.columns), '0', col0)

print(df)

# Returns:
#    1  2  3  0
# 0  1  2  3  0
# 1  1  2  3  0
# 2  1  2  3  0
```

В приведенном выше коде мы сначала используем метод `.pop()` для извлечения столбца. Затем мы вставляем его в последнюю позицию. Чтобы сделать этот код динамичным, мы используем функцию `len()` для подсчета количества столбцов в DataFrame и вставляем его в эту позицию.

Мы можем упростить приведённый выше код еще раз, сводя его к одному вызову метода. Поскольку DataFrame временно теряет одну колонку, нам нужно вычесть 1 из его длины:

```python
df.insert(len(df.columns)-1, '0', df.pop(0))
```

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

### Как переместить столбец DataFrame Pandas в определенную позицию

В этом заключительном разделе мы рассмотрим, как мы можем переместить DataFrame в Pandas на определенную позицию. Этот метод работает так же, как и примеры выше, за исключением того, что мы указываем уникальную позицию.

Давайте рассмотрим, как мы можем переместить последнюю колонку DataFrame на вторую позицию. Поскольку Python использует индексацию с нуля, это будет позиция

```python
# Move a Column to a Specific Position
import pandas as pd

values = {i: [i] * 3 for i in range(4)}
df = pd.DataFrame(values)

df.insert(1, '3', df.pop(3))

print(df)

# Returns:
#    0  3  1  2
# 0  0  3  1  2
# 1  0  3  1  2
# 2  0  3  1  2
```

В приведенном выше коде мы вставляем вытолкнутый последний столбец на вторую позицию. Это можно легко выполнить, объединив в один вызов метода.

### Заключение

В этом учебнике вы научились перемещать столбец DataFrame Pandas на определенную позицию, например, в начало или конец. Умение перемещать столбцы улучшает читаемость ваших данных. Это может быть невероятно полезным, когда вы экспортируете данные, [например, в файлы Excel](https://datagy.io/pandas-to-excel/) или [файлы CSV](https://datagy.io/pandas-dataframe-to-csv/)

Вы впервые научились использовать методы `.pop()` и `.insert()` для перемещения столбца Pandas в начало. Затем вы узнали, как повторить процесс, чтобы переместить столбец в конец DataFrame. Наконец, вы изучили, как переместить столбец на конкретную позицию.

### Дополнительные ресурсы

Чтобы узнать больше о схожих темах, ознакомьтесь с приведенными ниже учебными материалами:

* Изменение порядка столбцов Pandas: переиндексация Pandas и вставка Pandas
* Как добавить/вставить строку в фрейм данных Pandas
* Вставьте пустой столбец в фрейм данных Pandas
* [Pandas pop: Official Documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pop.html)
