Как добавить/вставить строку в DataFrame Pandas

В этом уроке вы узнаете, как добавить (или вставить) строку в Pandas DataFrame. Вы узнаете, как добавить одну строку, несколько строк и на конкретные позиции. Вы также узнаете, как добавить строку, используя список, Series и словарь.

К концу этого урока вы научитесь:

  • Различные способы добавления одной и нескольких строк в DataFrame Pandas

  • Как вставить строку в определенные позиции, например вверху или внизу, таблицы данных Pandas

  • Как добавлять строки с помощью списков, серий Pandas и словарей

Оглавление

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

Для пошагового выполнения данного руководства вы можете скопировать ниже приведенный код в ваш любимый редактор кода. Если у вас есть собственные данные, вы можете использовать их (хотя результаты, конечно, будут отличаться):

# Loading a Sample Pandas DataFrame
import pandas as pd

df = pd.DataFrame.from_dict({
    'Name': ['Nik', 'Kate', 'Evan', 'Kyra'],
    'Age': [31, 30, 40, 33],
    'Location': ['Toronto', 'London', 'Kingston', 'Hamilton']
})

print(df)

# Returns:
#    Name  Age  Location
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Evan   40  Kingston
# 3  Kyra   33  Hamilton

У нас есть четыре записи и три разные колонки, содержащие Имя, Возраст и Местоположение человека.

Самый простой способ добавить или вставить новую строку в DataFrame Pandas — использовать функцию Pandas .concat(). Чтобы узнать больше о работе этих функций, ознакомьтесь с моей подробной статьей здесь. В этом разделе вы узнаете три разных способа добавить одну строку в DataFrame Pandas.

Добавление строки в DataFrame Pandas с использованием словаря

Предположим, что мы хотим добавить новую строку с следующими данными: {'Name':'Jane', 'Age':25, 'Location':'Madrid'}.

Мы могли бы просто написать:

new_record = pd.DataFrame([{'Name':'Jane', 'Age':25, 'Location':'Madrid'}])
df = pd.concat([df, new_record], ignore_index=True)

print(df)

# Returns:
#    Name  Age  Location
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Evan   40  Kingston
# 3  Kyra   33  Hamilton
# 4  Jane   25    Madrid

В приведенном выше примере мы смогли добавить новую строку в DataFrame, используя словарь. Поскольку мы передали словарь, нам нужно было указать аргумент ignore_index=True

Добавление строки в Pandas DataFrame с использованием списка

Чтобы добавить список в DataFrame в Pandas, нужно использовать аксессор loc, так как просто использовать функцию .append() недостаточно. Для этого необходимо использовать длину DataFrame в качестве метки для нашего аксессора loc. Это создаст новую строку, как показано ниже:

df.loc[len(df)] = ['Jane', 25, 'Madrid']
print(df)

# Returns:
#    Name  Age  Location
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Evan   40  Kingston
# 3  Kyra   33  Hamilton
# 4  Jane   25    Madrid

Как забавное отклонение: использование iloc более сложно, так как требует, чтобы позиция индекса уже существовала – это означает, что нам нужно либо сначала добавить пустую строку, либо перезаписать данные.

Вставка строки в начало DataFrame Pandas

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

Однако сначала мы должны создать DataFrame. Мы можем сделать это, используя класс pd.DataFrame(). Давайте рассмотрим:

# Add a new record at the top of a DataFrame
new_record = pd.DataFrame([['Jane', 25, 'Madrid']], columns=df.columns)
df = pd.concat([new_record, df], ignore_index=True)
print(df)

# Returns:
#    Name  Age  Location
# 0  Jane   25    Madrid
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Evan   40  Kingston
# 3  Kyra   33  Hamilton

Вставка строки в Pandas DataFrame по определенному индексу

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

Например, если у нас есть текущие индексы от 0 до 3, и мы хотим вставить новую строку на индекс 2, мы можем просто присвоить ей индекс 1.5. Давайте посмотрим, как это работает:

# Inserting a Row at a Specific Index
df.loc[1.5] = ['Jane', 25, 'Madrid']
df = df.sort_index().reset_index(drop=True)

print(df)

# Returns:
#    Name  Age  Location
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Jane   25    Madrid
# 3  Evan   40  Kingston
# 4  Kyra   33  Hamilton

Это, конечно, делает несколько предположений:

  1. Ваш индекс начинается с 0. Соответственно, измените ваш индекс loc, если это не так.

  2. Ваш индекс может быть изменен таким образом. Если ваш индекс имеет более важное значение, это может быть не так.

Вставка нескольких строк в DataFrame Pandas

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

Давайте рассмотрим пример:

# Adding multiple rows to a Pandas DataFrame
new_rows = pd.DataFrame([{'Name': 'Jane', 'Age': 25, 'Location': 'Madrid'}, {'Name': 'Mel', 'Age': 23, 'Location':'New York'}])
df = pd.concat([df, new_rows], ignore_index=True)

print(df)

# Returns:
#    Name  Age  Location
# 0   Nik   31   Toronto
# 1  Kate   30    London
# 2  Evan   40  Kingston
# 3  Kyra   33  Hamilton
# 4  Jane   25    Madrid
# 5   Mel   23  New York

Заключение

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

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

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

  • Создайте пустой фрейм данных Pandas и добавьте данные

  • Pandas: получите номер строки из таблицы данных

  • Pandas: как удалить столбец индекса Dataframe

  • Как перетасовать строки данных Pandas в Python

Last updated