我遇到了一个奇怪的问题。我相信这背后有一个合乎逻辑的原因。在
所有的列都被称为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
我不明白为什么我不接电话。在
提前谢谢你的帮助。在
您使用的是内置Python
min
函数,该函数不知道nan
,并且处理方式不一致:相反,使用来自
^{pr2}$pandas
的min
方法,它知道在计算最小值时忽略nan
值。此方法采用一个axis
参数,因此,如果您的四个minageX
列是数据帧中唯一的列,则可以这样做通常,在处理pandas数据结构时,应避免使用内置的Python函数,如max、min、sum等,而应使用pandas版本;内置函数对pandas或向量化操作一无所知,可能会产生意外结果。在
相关问题 更多 >
编程相关推荐