In this tutorial, we will look at how to set or update the value of a cell in a pandas dataframe with the help of some examples.
How to set the value for a particular cell in pandas?

You can use the .at
or .iat
properties to access and set value for a particular cell in a pandas dataframe. The following is the syntax:
# set value using row and column labels df.at[row_label, column_label] = new_value # set value using row and column integer positions df.iat[row_position, column_position] = new_value
The .at
property lets you access the value of a single cell based on its row/column label pair whereas the .iat
property lets you access the value for the cell based on its row/column integer position.
These properties are similar to the .loc
and the iloc
property in pandas but they are generally used to access a range of values whereas .at
and iat
are specifically used to access a single value.
Let’s look at some examples. First, we will create a pandas dataframe that we will be using throughout this tutorial.
import pandas as pd # create a pandas dataframe scores_df = pd.DataFrame({ 'Maths': [49, 81, 83], 'History': [88, 70, 76], 'Science': [61, 76, 90] }, index = ['Sam', 'Soniya', 'Neeraj']) # display the dataframe print(scores_df)
Output:
Maths History Science Sam 49 88 61 Soniya 81 70 76 Neeraj 83 76 90
We created a dataframe with three rows, each storing the scores of a student in the subjects – Maths, History, and Science. Note that the dataframe’s rows are indexed by the student names.
On evaluating her answer scripts, Soniya found out a totaling mistake in her History scores. Her history total is actually 72. You are a TA on the course and have been tasked to update the scores accoringly.
1. Change a cell value based on its row and column labels
Use the .at
property to modify the value of a cell by its row and column labels.
# display the current value print(scores_df.at['Soniya', 'History']) # modify value by row and column label scores_df.at['Soniya', 'History'] = 72 # display the dataframe print(scores_df)
Output:
70 Maths History Science Sam 49 88 61 Soniya 81 72 76 Neeraj 83 76 90
Here, we use the .at
property of the dataframe to access the value for the row label “Soniya” and the column label “History” and then modify it to the new value.
Alternatively, you can the dataframe .loc
property to change the value by row and column labels as well. For example, let’s change the scores of Neeraj in Maths from 83 to 87.
# display the current value print(scores_df.at['Neeraj', 'Maths']) # modify value by row and column label scores_df.loc['Neeraj', 'Maths'] = 87 # display the dataframe print(scores_df)
Output:
83 Maths History Science Sam 49 88 61 Soniya 81 72 76 Neeraj 87 76 90
You can see that the “Maths” score for “Neeraj” has been modified. Note that .loc
is generally used to access a range of values whereas .at
only works for a single value.
2. Change a cell value based on its row and column integer positions
Use the .iat
property to modify the value of a cell by its row and column numbers (positions). For example, let’s change the scores of “Neeraj” in “Maths” from 87 to 83 using the row and column numbers.
# display the current value print(scores_df.iat[2, 0]) # modify value by row and column numbers scores_df.iat[2, 0] = 83 # display the dataframe print(scores_df)
Output:
87 Maths History Science Sam 49 88 61 Soniya 81 72 76 Neeraj 83 76 90
Here, we use the .iat
property of the dataframe to access the value in the row position 2 and the column position 0 and then modify it to the new value. Note that the row and column integer positions start from 0.
Alternatively, you can use the dataframe .iloc
property to change the value by row and column positions as well. For example, let’s change the scores of “Neeraj” in “Maths” from 83 to 87 using its row position 2 and column position 0.
# display the current value print(scores_df.iloc[2, 0]) # modify value by row and column positions scores_df.iloc[2, 0] = 87 # display the dataframe print(scores_df)
Output:
83 Maths History Science Sam 49 88 61 Soniya 81 72 76 Neeraj 87 76 90
Refer to the documentation of the .at and the .iat properties in pandas for more.
With this, we come to the end of this tutorial. The code examples and results presented in this tutorial have been implemented in a Jupyter Notebook with a python (version 3.8.3) kernel having pandas version 1.0.5
Subscribe to our newsletter for more informative guides and tutorials.
We do not spam and you can opt out any time.