Как получить значение max/min в Pandas DataFrame, когда значение nan в нем
Поскольку один столбец моего фрейма pandas имеет значение nan
, поэтому, когда я хочу получить максимальное значение этого столбца, он просто возвращает ошибку.
>>> df.iloc[:, 1].max()
'error:512'
Как я могу пропустить это значение nan
и получить максимальное значение этого столбца?
Ответы
Ответ 1
Вы можете использовать справку NumPy
с np.nanmax
, np.nanmin
:
In [28]: df
Out[28]:
A B C
0 7 NaN 8
1 3 3 5
2 8 1 7
3 3 0 3
4 8 2 7
In [29]: np.nanmax(df.iloc[:, 1].values)
Out[29]: 3.0
In [30]: np.nanmin(df.iloc[:, 1].values)
Out[30]: 0.0
Ответ 2
Вы можете использовать Series.dropna.
res = df.iloc[:, 1].dropna().max()
Ответ 3
Когда df содержит значения NaN
, он сообщает значения NaN
, используя np.nanmax(df.values)
дал желаемый ответ.
Ответ 4
Функция агрегации Dataframe .agg()
автоматически игнорирует значение NaN.
df.agg({'income':'max'})
Кроме того, его также можно использовать вместе с .groupby
df.groupby('column').agg({'income':['max','mean']})
Ответ 5
если вы не используете iloc или loc, это просто:
df['column'].max()
или же
df['column'][df.index.min():df.index.max()]
или любой вид диапазона в этих вторых квадратных скобках
Ответ 6
Вы можете установить numeric_only = True
при вызове max
:
df.iloc[:, 1].max(numeric_only = True)