python pandas min()未获取最小值

2024-09-28 20:51:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个奇怪的问题。我相信这背后有一个合乎逻辑的原因。在

所有的列都被称为minage4,minage4和minage4都有minage4和minage4。缺失值的数量从minage1增加到minage4。在

我创建了第五列,其中至少包含这四列:

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

看起来很管用直到我在第47排发现

^{pr2}$

使用.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

我不明白为什么我不接电话。在

提前谢谢你的帮助。在


Tags: lambda数量原因nanminlocapplyprint
1条回答
网友
1楼 · 发布于 2024-09-28 20:51:00

您使用的是内置Python min函数,该函数不知道nan,并且处理方式不一致:

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

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

^{pr2}$

通常,在处理pandas数据结构时,应避免使用内置的Python函数,如max、min、sum等,而应使用pandas版本;内置函数对pandas或向量化操作一无所知,可能会产生意外结果。在

相关问题 更多 >