Pandas: как заменить значения NaN строкой


Вы можете использовать следующие методы для замены значений NaN строками в кадре данных pandas:

Метод 1: заменить значения NaN строкой во всем кадре данных

df.fillna('', inplace= True )

Способ 2: заменить значения NaN строкой в определенных столбцах

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

Способ 3: заменить значения NaN на строку в одном столбце

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

В следующих примерах показано, как использовать каждый метод со следующими пандами 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

Метод 1: заменить значения NaN строкой во всем кадре данных

В следующем коде показано, как заменить каждое значение NaN во всем DataFrame пустой строкой:

#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

Обратите внимание, что каждое значение NaN в каждом столбце было заменено пустой строкой.

Способ 2: заменить значения NaN строкой в определенных столбцах

В следующем коде показано, как заменить значения NaN в определенных столбцах определенной строкой:

#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

Обратите внимание, что значения NaN в столбцах «очки» и «подборы» были заменены строкой «нет», но значения NaN в столбце «ассисты» остались неизменными.

Способ 3: заменить значения NaN на строку в одном столбце

В следующем коде показано, как заменить значения NaN в одном столбце определенной строкой:

#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

Обратите внимание, что значение NaN в столбце «Очки» было заменено строкой «ноль», но значения NaN в столбцах «Ассисты» и «Подборы» остались без изменений.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Pandas: как заменить значения в столбце на основе условия
Pandas: как заменить значения NaN на ноль
Pandas: как подсчитать пропущенные значения в DataFrame