Как получить значение 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)