- Добавление строки в Pandas DataFrame
- Синтаксис
- Пример 1
- Пример 2
- Pandas: добавление строки в DataFrame
- Метод Pandas append()
- Добавить строку в верхней части фрейма данных Pandas
- Pandas добавляет строку в верхнюю часть фрейма данных с помощью функции concat()
- Добавьте строку в нижней части фрейма данных
- Pandas добавляет строку внизу кадра данных с помощью функции concat()
- pandas.DataFrame.insert#
Добавление строки в Pandas DataFrame
Чтобы добавить или вставить строку в DataFrame, создайте новую строку, как Series и используйте метод append().
В этом руководстве мы узнаем, как добавить строку в существующий DataFrame с помощью наглядных примеров программ.
Синтаксис
Ниже приводится синтаксис функции DataFrame.appen().
mydataframe = mydataframe.append(new_row, ignore_index=True)
Где, полученный DataFrame содержит new_row, добавленный в mydataframe.
append() не изменяет DataFrame, но возвращает новый с добавленной строкой.
Пример 1
В этом примере мы создадим DataFrame и добавим новую строку. Она инициализируется как словарь Python, а функция append() используется для добавления строки.
Когда вы добавляете словарь Python в append(), убедитесь, что вы передаете ignore_index = True.
Метод append() возвращает DataFrame с вновь добавленной строкой.
import pandas as pd data = #create dataframe df_marks = pd.DataFrame(data) print('Original DataFrame\n------------------') print(df_marks) new_row = #append row to the dataframe df_marks = df_marks.append(new_row, ignore_index=True) print('\n\nNew row added to DataFrame\n--------------------------') print(df_marks)
Запустите указанную выше программу Python, и вы увидите исходный DataFrame, к которому добавлена новая строка.
Original DataFrame ------------------ name physics chemistry algebra 0 Somu 68 84 78 1 Kiku 74 56 88 2 Amol 77 73 82 3 Lini 78 69 87 New row added to DataFrame -------------------------- name physics chemistry algebra 0 Somu 68 84 78 1 Kiku 74 56 88 2 Amol 77 73 82 3 Lini 78 69 87 4 Geo 87 92 97
Пример 2
Если вы не укажете параметр ignoreIndex = False, вы получите TypeError.
В следующем примере мы попытаемся добавить строку в DataFrame с параметром ignoreIndex = False.
import pandas as pd data = #create dataframe df_marks = pd.DataFrame(data) print('Original DataFrame\n------------------') print(df_marks) new_row = #append row to the dataframe df_marks = df_marks.append(new_row, ignore_index=False) print('\n\nNew row added to DataFrame\n--------------------------') print(df_marks)
Original DataFrame ------------------ name physics chemistry 0 Amol 77 73 1 Lini 78 85 Traceback (most recent call last): File "example1.py", line 14, in df_marks = df_marks.append(new_row, ignore_index=False) File "C:\Users\PythonExamples\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 6658, in append raise TypeError('Can only append a Series if ignore_index=True' TypeError: Can only append a Series if ignore_index=True or if the Series has a name
Как говорится в сообщении об ошибке, нам нужно либо предоставить параметр ignore_index = True, либо добавить строку, то есть Series, с именем.
Мы уже видели в примере 1, как добавить строку в DataFrame с ignore_index = True. Теперь посмотрим, как добавить строку с ignore_index = False.
import pandas as pd data = #create dataframe df_marks = pd.DataFrame(data) print('Original DataFrame\n------------------') print(df_marks) new_row = pd.Series(data=, name='x') #append row to the dataframe df_marks = df_marks.append(new_row, ignore_index=False) print('\n\nNew row added to DataFrame\n--------------------------') print(df_marks)
Мы назвали серию данными. Поэтому ignore_index = False не возвращает TypeError, и строка добавляется к DataFrame.
Original DataFrame ------------------ name physics chemistry 0 Amol 77 73 1 Lini 78 85 New row added to DataFrame -------------------------- name physics chemistry 0 Amol 77 73 1 Lini 78 85 x Geo 87 92
В этом руководстве по Pandas мы использовали функцию append(), чтобы добавить строку в Pandas DataFrame.
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.DataFrame.insert#
Raises a ValueError if column is already contained in the DataFrame, unless allow_duplicates is set to True.
Parameters loc int
Insertion index. Must verify 0
column str, number, or hashable object
Label of the inserted column.
value Scalar, Series, or array-like allow_duplicates bool, optional, default lib.no_default
>>> df = pd.DataFrame('col1': [1, 2], 'col2': [3, 4]>) >>> df col1 col2 0 1 3 1 2 4 >>> df.insert(1, "newcol", [99, 99]) >>> df col1 newcol col2 0 1 99 3 1 2 99 4 >>> df.insert(0, "col1", [100, 100], allow_duplicates=True) >>> df col1 col1 newcol col2 0 100 1 99 3 1 100 2 99 4
Notice that pandas uses index alignment in case of value from type Series :
>>> df.insert(0, "col0", pd.Series([5, 6], index=[1, 2])) >>> df col0 col1 col1 newcol col2 0 NaN 100 1 99 3 1 5.0 100 2 99 4