2024-10-01 00:15:58 发布
网友
我使用此代码将NaN替换为范围内的随机值
import numpy as np def processNan (x): return np.random.choice([1.0, 2.0]) assure['codeTypePieceIdentite'] = assure['codeTypePieceIdentite'].apply(lambda x: processNan(x) if x is nan else x)
因为某种原因它不起作用什么都没有改变
尽可能避免使用.apply,因为它不利用矢量化,所以不是最佳解决方案。在这种情况下,您可以执行以下操作:
.apply
mask = df["codeTypePieceIdentite"].isna() df.loc[mask, "codeTypePieceIdentite"] = np.random.choice([1,2], mask.sum())
您应该改用math.isnan(x):
math.isnan(x)
import numpy as np import math def processNan (x): return np.random.choice([1.0, 2.0]) assure['codeTypePieceIdentite'] = assure['codeTypePieceIdentite'].apply(lambda x: processNan(x) if math.isnan(x) else x)
要编写地道的pandas代码,您应该尽可能使用pandas或numpy包,而不是Python内置或其他Python补充包
pandas提供了通用函数^{}和^{},用于检测类数组对象的缺失/非缺失值。您的代码可以修改为使用pd.isna(),如下所示:
pd.isna()
assure['codeTypePieceIdentite'] = \ assure['codeTypePieceIdentite'].apply(lambda x: processNan(x) if pd.isna(x) else x)
使用熊猫的主要优势;numpy是指它们从其ndarray数据类型中提供高效的阵列处理,该数据类型已在其基础设计中针对性能考虑进行了优化。numpy也很常用,因为熊猫是基于numpy建造的
对于检查pandas系列和DataFrame的nan值,pd.isna()和pd.notna()是显而易见的选择。对于检查pandas系列中的单个元素,尽管您也可以使用pandas或numpy以外的包,但只要您正在处理pandas对象,仍然建议使用pandas函数。这将帮助您编写惯用代码,并在导入额外的补充包时为您节省一些系统资源(内存和处理时间)
pd.notna()
尽可能避免使用
.apply
,因为它不利用矢量化,所以不是最佳解决方案。在这种情况下,您可以执行以下操作:您应该改用
math.isnan(x)
:要编写地道的pandas代码,您应该尽可能使用pandas或numpy包,而不是Python内置或其他Python补充包
pandas提供了通用函数^{} 和^{} ,用于检测类数组对象的缺失/非缺失值。您的代码可以修改为使用
pd.isna()
,如下所示:使用熊猫的主要优势;numpy是指它们从其ndarray数据类型中提供高效的阵列处理,该数据类型已在其基础设计中针对性能考虑进行了优化。numpy也很常用,因为熊猫是基于numpy建造的
对于检查pandas系列和DataFrame的nan值,
pd.isna()
和pd.notna()
是显而易见的选择。对于检查pandas系列中的单个元素,尽管您也可以使用pandas或numpy以外的包,但只要您正在处理pandas对象,仍然建议使用pandas函数。这将帮助您编写惯用代码,并在导入额外的补充包时为您节省一些系统资源(内存和处理时间)相关问题 更多 >
编程相关推荐