python - 与 numpy 不同,带有 NaN 的 Pandas 系列 np.max 不会将 NaN 显示为最大值

标签 python pandas numpy nan

data_df[“列名”]

<class 'pandas.core.series.Series'>

0     -475.0
1     -799.0
2     -656.0
3     -444.0
4     -901.0
       ...
575      NaN
576      NaN
577      NaN
578      NaN
579      NaN


type(data_df["colname"].iloc[579])
<class 'numpy.float64'>

data_df["colname"].iloc[579] 
nan
当我使用 np.nan 运行普通数组时,我得到以下信息:
>>> np.max([1,2,3,4,np.float64(np.nan)], initial=1)
nan

>>> np.max([1,2,3,4,np.nan], initial=1)
nan
但是对于 Pandas ,尽管包含 NaN 值:
np.max(data_df["colname"]) 
83.0
它不匹配,这是怎么回事?

此外,虽然 np.amax 有 'initial' 参数:
>>> np.max([1,2,3,4,np.nan], initial=1)
nan
Pandas 它给出了一个错误:
np.max(data_df["colname"], initial=1)


    validate_kwargs(fname, kwargs, self.defaults)
  File "/Users/-/poetry/virtualenvs/-/lib/python3.9/site-packages/pandas/util/_validators.py", line 153, in validate_kwargs
    _check_for_invalid_keys(fname, kwargs, compat_args)
  File "/Users/-/poetry/virtualenvs/-/lib/python3.9/site-packages/pandas/util/_validators.py", line 127, in _check_for_invalid_keys
    raise TypeError(f"{fname}() got an unexpected keyword argument '{bad_arg}'")
TypeError: max() got an unexpected keyword argument 'initial'
似乎它没有通过 pandas 关键字参数验证。

最佳答案

请注意,您的错误回溯实际上引发了 pandas 中的错误代码。初步验证已转至pandas .

 np.max(data_df['colname'].values, initial=1) 
是纯 numpy 版本。
(稍后我可能会添加详细信息。)
想想np.max作为与其他行为类似的原始版本 numpy ufunc . np.nanmaxnanfunctions.py 中的众多附加组件之一.这里它取代了 nan-inf .并且只适用于 float 。 pandas用户遇到丢失数据的情况比较多,所以它的开发者增加了铃声,额外的nan处理确实需要时间。

关于python - 与 numpy 不同,带有 NaN 的 Pandas 系列 np.max 不会将 NaN 显示为最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675911/

相关文章:

python - 在某些条件下分割数据框

python - 关于python变量作用域的一个小问题

python - 如何在 Pandas Dataframe 中找到 'n' 行数据的列的最小值或最大值?

python - 将 numpy 数组每行移动一个递增的值

python - 有效计算数组元素的所有成对组合的度量

Python datetime 工作日数字代码 - 动态?

python - OneHotEncoder categorical_features 已弃用,如何转换特定列

使用 csv 或 pandas 模块的 python csv 到字典

python - 导入混淆 Pandas

python - 内存错误: Unable to allocate array shape ({very large}), windows Python解决方案