Как добавить новую строчку в DataFrame при указании значения только одного столбца?
Необходимо добавить в DF новую строку, указав значение только одного столбца. Например имеем фрейм данных:
d = df = pd.DataFrame(data = d)
Необходимо добавить строку в конец фрейма, указав только значение адреса. Должно получиться следующее:
d1 = df1 = pd.DataFrame(data = d1)
Причём, желательно обойтись без перебора функцией for.
Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 31 янв 2022 в 20:14
lerm_on_t_off lerm_on_t_off
133 11 11 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вариант 1:
df.loc[len(df)] = [np.nan, np.nan, 'VR']
Вариант 2:
df = df.append(dict(Address="VR"), ignore_index=True)
Вариант 3:
df = df.append(pd.Series("VR", name=len(df), index=["Address"]))
Отслеживать
ответ дан 31 янв 2022 в 20:33
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
в дополнение к уже предложенному:
df.loc[len(df),'Address'] = 'VR'
Отслеживать
ответ дан 1 фев 2022 в 9:31
5,635 1 1 золотой знак 7 7 серебряных знаков 17 17 бронзовых знаков
по-моему, это оптимальный вариант для случая когда отсутствуют данные для других столбцов )
1 фев 2022 в 9:33
Но это только если индексы строго от 0 до len(df)-1 , а если вдруг в индексах разброд и шатание (например, из датафрейма что-то удаляли, а индекс не сбросили), то значение может попасть в уже имеющуюся строку. Как вариант можно взять индекс df.index.max()+1 .
1 фев 2022 в 9:39
@CrazyElf, с «кастомными» индексами все еще веселее — они могут быть строками или timestamp, тогда и ваш вариант ( df.index.max()+1 ) неправильно отработает )
1 фев 2022 в 11:08
@MaxU Безусловно. Но вариант «из датафрейма удалили (не выбрали) некоторые строки» всё-таки более вероятен )
Pandas: добавление строки в DataFrame
Модуль pandas предоставляет различные методы для добавления и удаления строк из фрейма данных. В этой статье мы обсудим различные способы добавления строки в кадр данных pandas с использованием метода append() и функции concat() .
Метод Pandas append()
Мы используем метод append() для добавления объекта словаря, серии или фрейма данных к другому фрейму данных. Он имеет следующий синтаксис.
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)
- Параметр other принимает серию pandas, словарь или другой фрейм данных в качестве входного аргумента.
- Мы используем параметр ignore_index , чтобы указать, хотим ли мы сохранить индекс исходных кадров данных. По умолчанию установлено значение False , что означает, что выходной фрейм данных содержит индексы из исходных фреймов данных. Чтобы сбросить индексы и создать новый индекс в выходном фрейме данных, вы можете установить для параметра ignore_index значение True .
- Мы используем параметр verify_integrity , чтобы указать, хотим ли мы разрешить дублирование индексов в выходном кадре данных или нет. По умолчанию для параметра verify_integrity установлено значение False . Это означает, что выходной кадр данных может содержать повторяющиеся индексы. Чтобы запретить дублирование индексов, вы можете установить для параметра verify_integrity значение True .
- Мы используем параметр sort , чтобы указать, хотим ли мы сортировать столбцы, если столбцы фреймов данных не выровнены.
После выполнения метод append() возвращает новый фрейм данных.
Добавить строку в верхней части фрейма данных Pandas
Чтобы добавить строку вверху фрейма данных, мы будем использовать метод append() и функцию DataFrame() .
Предположим, что мы хотим добавить новый словарь Python в виде строки в существующий фрейм данных. Для этого мы будем использовать следующие шаги.
- Во-первых, мы поместим словарь, содержащий значения строк, в список.
- Далее мы создадим фрейм данных, используя список и функцию DataFrame() . Функция DataFrame() принимает список, содержащий словарь, в качестве входных данных и возвращает кадр данных после выполнения.
- Теперь мы вызовем метод append() для вновь созданного фрейма данных и передадим существующий фрейм данных в качестве входного аргумента.
После выполнения метода append() мы получим выходной фрейм данных с новой строкой, добавленной вверху. Вы можете наблюдать это на следующем примере.
import pandas as pd myDicts=[, , , , , ] df=pd.DataFrame(myDicts) print("The original dataframe is:") print(df) newDict= print("New row data is:") print(newDict) df1=pd.DataFrame([newDict]) df2=df1.append(df,ignore_index=True) print("The output dataframe is:") print(df2)
The original dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 New row data is: The output dataframe is: Roll Maths Physics Chemistry 0 11 81 74 93 1 1 100 80 90 2 2 80 100 90 3 3 90 80 70 4 4 100 100 90 5 5 90 90 80 6 6 80 70 70
Метод append() будет объявлен устаревшим в следующих версиях pandas. Поэтому вы можете использовать функцию concat() для объединения кадров данных.
Pandas добавляет строку в верхнюю часть фрейма данных с помощью функции concat()
Функция contact() принимает список фреймов данных в качестве своего входного аргумента и объединяет их в один фрейм данных. Поскольку мы хотим добавить новую строку к существующему фрейму данных, мы передадим фрейм данных, содержащий новую строку, в качестве первого элемента и существующий фрейм данных в качестве второго элемента входного списка, функции concat() .
После выполнения функции concat() мы получим желаемый выходной кадр данных, как показано ниже.
import pandas as pd myDicts=[, , , , , ] df=pd.DataFrame(myDicts) print("The original dataframe is:") print(df) newDict= print("New row data is:") print(newDict) df1=pd.DataFrame([newDict]) df2=pd.concat([df1,df],ignore_index=True) print("The output dataframe is:") print(df2)
The original dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 New row data is: The output dataframe is: Roll Maths Physics Chemistry 0 11 81 74 93 1 1 100 80 90 2 2 80 100 90 3 3 90 80 70 4 4 100 100 90 5 5 90 90 80 6 6 80 70 70
В приведенных выше примерах мы добавили новую строку вверху фрейма данных, используя метод append() и метод concat() один за другим.
Добавьте строку в нижней части фрейма данных
Чтобы добавить строку внизу фрейма данных, нам просто нужно вызвать метод append() для исходного фрейма данных и передать словарь python, содержащий данные строки, в качестве входного аргумента. После выполнения метода append() мы получим желаемый выходной кадр данных, как показано ниже.
import pandas as pd myDicts=[, , , , , ] df=pd.DataFrame(myDicts) print("The original dataframe is:") print(df) newDict= print("New row data is:") print(newDict) df2=df.append(newDict,ignore_index=True) print("The output dataframe is:") print(df2)
The original dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 New row data is: The output dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 6 11 81 74 93
При использовании метода append() в приведенном выше примере мы установили для параметра ignore_index значение True . Это необходимо, потому что метод append() вызовет ошибку, если мы этого не сделаем. При добавлении словаря в фрейм данных pandas с помощью метода append() вам всегда нужно устанавливать для параметра ignore_index значение True .
Pandas добавляет строку внизу кадра данных с помощью функции concat()
Чтобы добавить строку внизу фрейма данных с помощью функции contact() , вам сначала нужно создать фрейм данных из словаря, содержащего данные строки.
Затем вы можете передать существующий фрейм данных в качестве первого элемента и фрейм данных, содержащий новую строку, в качестве второго элемента списка ввода в функцию concat() . После выполнения функции concat() вы получите желаемый кадр данных, как показано в следующем примере.
import pandas as pd myDicts=[, , , , , ] df=pd.DataFrame(myDicts) print("The original dataframe is:") print(df) newDict= print("New row data is:") print(newDict) df1=pd.DataFrame([newDict]) df2=pd.concat([df,df1],ignore_index=True) print("The output dataframe is:") print(df2)
The original dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 New row data is: The output dataframe is: Roll Maths Physics Chemistry 0 1 100 80 90 1 2 80 100 90 2 3 90 80 70 3 4 100 100 90 4 5 90 90 80 5 6 80 70 70 6 11 81 74 93
Как видно из приведенного выше вывода, мы добавили новую строку внизу существующего фрейма данных с помощью функции contact() .
Теперь мы знаем, как добавить строку во фрейм данных.
Как добавить строки в фрейм данных Pandas (с примерами)
Вы можете использовать функцию df.loc() , чтобы добавить строку в конец кадра данных pandas:
#add row to end of DataFrame df.loc[ len(df.index )] = [value1, value2, value3, . ]
И вы можете использовать функцию df.append() для добавления нескольких строк существующего DataFrame в конец другого DataFrame:
#append rows of *df2* to end of existing DataFrame df = df.append(df2, ignore_index = True )
В следующих примерах показано, как использовать эти функции на практике.
Пример 1: добавить одну строку в Pandas DataFrame
Следующий код показывает, как добавить одну строку в конец кадра данных pandas:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df points rebounds assists 0 10 7 11 1 12 7 8 2 12 8 10 3 14 13 6 4 13 7 6 5 18 4 5 #add new row to end of DataFrame df.loc[ len(df.index )] = [20, 7, 5] #view updated DataFrame df points rebounds assists 0 10 7 11 1 12 7 8 2 12 8 10 3 14 13 6 4 13 7 6 5 18 4 5 6 20 7 5
Пример 2: добавить несколько строк в Pandas DataFrame
Следующий код показывает, как добавить несколько строк существующего DataFrame в конец другого DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df points rebounds assists 0 10 7 11 1 12 7 8 2 12 8 10 3 14 13 6 4 13 7 6 5 18 4 5 #define second DataFrame df2 = pd.DataFrame() #add new row to end of DataFrame df = df.append(df2, ignore_index = True ) #view updated DataFrame df points rebounds assists 0 10 7 11 1 12 7 8 2 12 8 10 3 14 13 6 4 13 7 6 5 18 4 5 6 21 7 11 7 25 7 3 8 26 13 3
Обратите внимание, что два кадра данных должны иметь одинаковые имена столбцов, чтобы успешно добавлять строки одного кадра данных в конец другого.
Как добавить строку в dataframe pandas
Регулярно при работе с информацией в Dataframe Pandas мы сталкиваемся с задачей добавления новых строк с данными. В этой статье мы рассмотрим основные способы того, как добавить строку в Pandas Dataframe.
Способ 1. Добавление строки в Dataframe Pandas при помощи метода append()
Pandas предоставляет нам встроенный метод append(), который позволяет добавить новую строку. Общий синтаксис следующий:
append(новая_строка, ignore_index=True), где
- новая_строка – новые данные к существующей таблице в формате словаря
- ignore_index=True – позволяет исключить ошибку «Can only append a Series if ignore_index=True or if the Series has a name»
Также важно отметить что метод append не изменяет существующий dataframe, а создает новый.
Итак, давайте сформируем новую строку в формате словаря для города Омск:
Теперь добавим ее к нашему Dataframe и посмотрим результат:
city_new_df = city_df.append(city_omsk, ignore_index=True)
city_new_df
Способ 2. Добавление строки в Dataframe Pandas при помощи метода loc()
Метод loc () позволяет добавить строку в конец существующего Dataframe :
city_df.loc[len(city_df.index)] = [‘Омск’, ‘1716’, ‘573’,’1,2′,’10’]
city_df
Недостатком этого метода является то, что мы должны задать значения для всех столбцов, иначе Python вернет нам ошибку «cannot set a row with mismatched columns».
Способ 3. Добавление несколько строк в Dataframe Pandas
В ситуации, когда нам необходимо добавить несколько строк в Dataframe, мы можем создать второй Dataframe с новыми данными и объединить его с существующим при помощи метода append().
Создаем новый Dataframe (обратите внимание, что столбцы должны быть в нем такие же, как в Dataframe, с которым мы хотим объединить данные):
Теперь объединим с существующим Dataframe city_df с помощью уже известного нам метода append():
city_df = city_df.append(city_add_df, ignore_index = True)
city_df
Мы рассмотрели три основных способа добавления новых строк в Dataframe Pandas. Хотите попрактиковаться сами – скачайте наш ноутбук.
P.S. Хотел бы рекомендовать вам ознакомиться со следующими статьями с нашего сайта:
- Как из Pandas удалить строку?
- Как добавить столбец в Pandas?
- Как из Pandas удалить столбец?