Pandas: как заменить инфу максимальным значением


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

Способ 1: заменить inf на максимальное значение в одном столбце

#find max value of column
max_value = np.nanmax(df['my_column'][df['my_column'] != np.inf ])

#replace inf and -inf in column with max value of column 
df['my_column']. replace([np.inf , -np.inf ], max_value, inplace= True )

Способ 2: заменить inf на максимальное значение во всех столбцах

#find max value of entire data frame
max_value = np.nanmax(df[df != np.inf ])

#replace inf and -inf in all columns with max value
df.replace([np.inf , -np.inf ], max_value, inplace= True )

В следующих примерах показано, как использовать этот синтаксис на практике со следующими пандами DataFrame:

import pandas as pd
import numpy as np

#create DataFrame
df = pd.DataFrame({'points': [18, np.inf, 19, np.inf, 14, 11, 20, 28],
 'assists': [5, 7, 7, 9, 12, 9, 9, np.inf],
 'rebounds': [np.inf, 8, 10, 6, 6, -np.inf, 9, 12]})

#view DataFrame
print(df)

 points assists rebounds
0 18.0 5.0 inf
1 inf 7.0 8.0
2 19.0 7.0 10.0
3 inf 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 -inf
6 20.0 9.0 9.0
7 28.0 inf 12.0

Пример 1: заменить inf на максимальное значение в одном столбце

В следующем коде показано, как заменить значения inf и -inf в столбце rebounds максимальным значением столбца rebounds:

#find max value of rebounds
max_value = np.nanmax(df['rebounds'][df['rebounds'] != np.inf ])

#replace inf and -inf in rebounds with max value of rebounds
df['rebounds']. replace([np.inf , -np.inf ], max_value, inplace= True )

#view updated DataFrame
print(df)

 points assists rebounds
0 18.0 5.0 12.0
1 inf 7.0 8.0
2 19.0 7.0 10.0
3 inf 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 12.0
6 20.0 9.0 9.0
7 28.0 inf 12.0

Обратите внимание, что каждое значение inf и -inf в столбце подборов было заменено максимальным значением 12 в этом столбце.

Пример 2: заменить inf на максимальное значение во всех столбцах

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

#find max value of entire data frame
max_value = np.nanmax(df[df != np.inf ])

#replace all inf and -inf with max value
df.replace([np.inf , -np.inf ], max_value, inplace= True )

#view updated DataFrame
print(df)

 points assists rebounds
0 18.0 5.0 28.0
1 28.0 7.0 8.0
2 19.0 7.0 10.0
3 28.0 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 28.0
6 20.0 9.0 9.0
7 28.0 28.0 12.0

Обратите внимание, что каждое значение inf и -inf в каждом столбце было заменено максимальным значением во всем фрейме данных 28 .

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

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

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

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