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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.