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.nanmax
是 nanfunctions.py
中的众多附加组件之一.这里它取代了 nan
与 -inf
.并且只适用于 float 。 pandas
用户遇到丢失数据的情况比较多,所以它的开发者增加了铃声,额外的nan
处理确实需要时间。
关于python - 与 numpy 不同,带有 NaN 的 Pandas 系列 np.max 不会将 NaN 显示为最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675911/