我正在尝试替换我的熊猫中的异常值和NaN值。使用apply方法和lambda函数,并通过属性进行过滤,使用该系列的模式获取DataFrame。我已经尝试了三种不同的方式,但它似乎没有捕捉到NaN值的情况。
df.apply( lambda row: mode
if (row['prop1']>quart95 or row['prop1']==np.nan) and row['prop2']=='some_value'
else row['prop1'], axis=1 )
df.apply( lambda row: mode
if (row['prop1']>quart95 or row['prop1']==None) and row['prop2']=='some_value'
else row['prop1'], axis=1 )
df.apply( lambda row: mode
if (row['prop1']>quart95 or not row['prop1']) and row['prop2']=='some_value'
else row['prop1'], axis=1 )
为什么它能找到异常值,但不能找到nan ?我该怎么修理它或做它?
假设mode
为单个值(非列表):
df[df[column_name].isna() | df[column_name]>quart95] = mode
您可以使用bitwise OR operator (|)
来完成此条件。请参考这个链接来了解更多的位运算符