gpt4 book ai didi

python pandas min() 没有达到最小值

转载 作者:太空狗 更新时间:2023-10-30 02:44:19 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我敢肯定这背后有一个合乎逻辑的原因。

我有一个名为 alloptions 的数据框,它有 4 列,minage1、minage2、minage3 和 minage4,它们都是 float64。缺失值的数量从 minage1 增加到 minage4。

我创建了第五列,它采用这四列中的最小值:

alloptions['minage']=alloptions.apply(lambda x: min([x['minage1'],x['minage2'],x['minage3'],x['minage4']]),axis=1)

在我发现第 47 行之前,它看起来很有效

     minage1    minage2 minage3 minage4 minage      
47 NaN 56.0 NaN NaN NaN

使用 .loc,我隔离该行:

In [10]:

print alloptions.loc[47,:]
print alloptions.loc[47,:].dtypes

我明白了

minage1   NaN
minage2 56
minage3 NaN
minage4 NaN
minage NaN
Name: 47, dtype: float64
float64

所以我很困惑为什么这个函数没有得到 56。

预先感谢您的帮助。

最佳答案

你正在使用内置的 Python min 函数,它不知道 nan 并且不一致地对待它:

>>> min(1, np.nan)
1
>>> min(np.nan, 1)
nan

相反,使用 pandasmin 方法,它知道在计算最小值时忽略 nan 值。此方法采用 axis 参数,因此如果您的四个 minageX 列是 DataFrame 中唯一的列,您可以这样做

df['minage'] = df.min(axis=1)

一般来说,在使用 pandas 数据结构时,您应该避免使用内置的 Python 函数,例如 max、min、sum 等,而是使用 pandas 版本;内置函数对 pandas 或矢量化操作一无所知,可能会产生意想不到的结果。

关于python pandas min() 没有达到最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com