How to Add or Append Row to Pandas DataFrame? Examples


Pandas DataFrame - Add or Append Row

To append or add a row to DataFrame, create the new row as Series and use DataFrame.append() method.

In this tutorial, we shall learn how to append a row to an existing DataFrame, with the help of illustrative example programs.

Syntax of append()

The syntax of DataFrame.append() function to append a row new_row to the DataFrame mydataframe is

mydataframe.append(new_row, ignore_index=True)

where the resulting DataFrame contains new_row added to mydataframe.

append() is immutable. It does not change the original DataFrame, but returns a new DataFrame created from the given DataFrame with the row appended. In order to update the original DataFrame, assign the DataFrame returned by the append() function back to the original DataFrame.

mydataframe = mydataframe.append(new_row, ignore_index=True)
Pandas Add Row to DataFrame

Examples

1. Add Row to DataFrame

In this example, we will create a DataFrame and append a new row to this DataFrame. The new row is initialized as a Python Dictionary and append() function is used to append the row to the dataframe.

When you are adding a Python Dictionary to append(), make sure that you pass ignore_index=True.

The append() method returns the dataframe with the newly added row.

Python Program

import pandas as pd

data = {'name': ['Somu', 'Kiku', 'Amol', 'Lini'],
	'physics': [68, 74, 77, 78],
	'chemistry': [84, 56, 73, 69],
	'algebra': [78, 88, 82, 87]}

	
#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = {'name':'Geo', 'physics':87, 'chemistry':92, 'algebra':97}
#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)

Output

Run the above Python program, and you shall see the original dataframe, and the dataframe appended with the new row.

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. Add Row to Pandas DataFrame (ignoreIndex = False)

If you do not provide the parameter ignoreIndex=False, you will get TypeError.

In the following example, we will try to append a row to DataFrame with the parameter ignoreIndex=False.

Python Program

import pandas as pd

data = {'name': ['Amol', 'Lini'],
	'physics': [77, 78],
	'chemistry': [73, 85]}

#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = {'name':'Geo', 'physics':87, 'chemistry':92}
#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)

Output

Original DataFrame
------------------
   name  physics  chemistry
0  Amol       77         73
1  Lini       78         85
Traceback (most recent call last):
  File "example1.py", line 14, in <module>
    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

As the error message says, we need to either provide the parameter ignore_index=True or append the row, that is Series with a name.

We have already seen in Example 1, how to add row to the DataFrame with ignore_index=True. Now we will see how to add a row with ignore_index=False.

Python Program

import pandas as pd

data = {'name': ['Amol', 'Lini'],
	'physics': [77, 78],
	'chemistry': [73, 85]}

#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = pd.Series(data={'name':'Geo', 'physics':87, 'chemistry':92}, 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)

We have named the Series as data. Therefore ignore_index=False does not return a TypeError and the row is appended to the DataFrame.

Output

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

Summary

In this Pandas Tutorial, we have used append() function to add a new row to Pandas DataFrame.