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