Как добавить/вставить строку в 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
Это, конечно, делает несколько предположений:
Ваш индекс начинается с 0. Соответственно, измените ваш индекс
loc
, если это не так.Ваш индекс может быть изменен таким образом. Если ваш индекс имеет более важное значение, это может быть не так.
Вставка нескольких строк в 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