How can I update my DataFrame while looping through it?

You can use a for loop to iterate through the DataFrame and update the values in each row. You can then use the inplace parameter to make the change permanent. If you are looping through a large DataFrame, it may be better to use the apply method, as this may be more efficient.


You can use the following basic syntax to update values in a pandas DataFrame while using iterrows:

for i, row in df.iterrows():
    points_add = 10
    if row['points'] > 15:
        points_add = 50
    df.at[i,'points'] = points_add

This particular example iterates over each row in a DataFrame and updates the value in the points column to be 50 if the value is currently greater than 15.

If the current value is less than or equal to 15, the value is updated to be 10.

The following example shows how to use this syntax in practice.

Example: Update Values in Pandas DataFrame in iterrows

Suppose we have the following pandas DataFrame that shows the number of points scored by various basketball players:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
                   'points': [10, 12, 14, 15, 15, 15, 16, 17, 20]})

#view DataFrame
print(df)

  player  points
0      A      10
1      B      12
2      C      14
3      D      15
4      E      15
5      F      15
6      G      16
7      H      17
8      I      20

Suppose we would like to update the values in the points column using the following logic:

  • If points is less than or equal to 15, update the value to be 10.
  • If points is greater than 15, update the value to be 50.

We can use the iterrows function to iterate over each row in the DataFrame and make these updates:

#iterate over each row in DataFrame and update values in points column
for i, row in df.iterrows():
    points_add = 10
    if row['points'] > 15:
        points_add = 50
    df.at[i,'points'] = points_add

#view updated DataFrame
print(df)

  player  points
0      A      10
1      B      10
2      C      10
3      D      10
4      E      10
5      F      10
6      G      50
7      H      50
8      I      50

We can see that the values in the points column have been updated accordingly.

Note: You can find the complete documentation for the pandas iterrows() function .

x