Home » Pandas: How to Replace NaN Values with String

Pandas: How to Replace NaN Values with String

by Erma Khan

You can use the following methods to replace NaN values with strings in a pandas DataFrame:

Method 1: Replace NaN Values with String in Entire DataFrame

df.fillna('', inplace=True)

Method 2: Replace NaN Values with String in Specific Columns

df[['col1', 'col2']] = df[['col1','col2']].fillna('')

Method 3: Replace NaN Values with String in One Column

df.col1 = df.col1.fillna('')

The following examples show how to use each method with the following pandas DataFrame:

import pandas as pd
import numpy as np

#create DataFrame with some NaN values
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'points': [np.nan, 11, 7, 7, 8, 6, 14, 15],
                   'assists': [5, np.nan, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, np.nan, 6, 5, 9, np.nan]})

#view DataFrame
df

team	points	assists	rebounds
0	A	NaN	5.0	11.0
1	A	11.0	NaN	8.0
2	A	7.0	7.0	10.0
3	A	7.0	9.0	NaN
4	B	8.0	12.0	6.0
5	B	6.0	9.0	5.0
6	B	14.0	9.0	9.0
7	B	15.0	4.0	NaN

Method 1: Replace NaN Values with String in Entire DataFrame

The following code shows how to replace every NaN value in an entire DataFrame with an empty string:

#replace NaN values in all columns with empty string
df.fillna('', inplace=True)

#view updated DataFrame
df

	team	points	assists	rebounds
0	A		5.0	11.0
1	A	11.0		8.0
2	A	7.0	7.0	10.0
3	A	7.0	9.0	
4	B	8.0	12.0	6.0
5	B	6.0	9.0	5.0
6	B	14.0	9.0	9.0
7	B	15.0	4.0	

Notice that every NaN value in each column has been replaced with an empty string.

Method 2: Replace NaN Values with String in Specific Columns

The following code shows how to replace NaN values in specific columns with a specific string:

#replace NaN values in 'points' and 'rebounds' columns with 'none'
df[['points', 'rebounds']] = df[['points', 'rebounds']].fillna('none')

#view updated DataFrame
df

        team	points	assists	rebounds
0	A	none	5.0	11.0
1	A	11.0	NaN	8.0
2	A	7.0	7.0	10.0
3	A	7.0	9.0	none
4	B	8.0	12.0	6.0
5	B	6.0	9.0	5.0
6	B	14.0	9.0	9.0
7	B	15.0	4.0	none	

Notice that the NaN values in the ‘points’ and ‘rebounds’ columns were replaced with the string ‘none’, but the NaN values in the ‘assists’ column remained unchanged.

Method 3: Replace NaN Values with String in One Column

The following code shows how to replace NaN values in one column with a specific string:

#replace NaN values in 'points' column with 'zero'
df.points = df.points.fillna('zero')

#view updated DataFrame
df

	team	points	assists	rebounds
0	A	zero	5.0	11.0
1	A	11.0	NaN	8.0
2	A	7.0	7.0	10.0
3	A	7.0	9.0	NaN
4	B	8.0	12.0	6.0
5	B	6.0	9.0	5.0
6	B	14.0	9.0	9.0
7	B	15.0	4.0	NaN	

Notice that the NaN value in the ‘points’ column was replaced replaced with the string ‘zero’, but the NaN values in the ‘assists’ and ‘rebounds’ columns remained unchanged.

Additional Resources

The following tutorials explain how to perform other common operations in pandas:

Pandas: How to Replace Values in Column Based on Condition
Pandas: How to Replace NaN Values with Zero
Pandas: How to Count Missing Values in DataFrame

Related Posts