[英]In a column, fill values that are not a number with “NaN”
我有一个 DataFrame 有一个特定的列,其值如下:
index some_column
0 12345
1 23549
2 .....
3 78516
4 98713
5 .....
我想检查列中的值,如果值不是数字(即如果值为“.....”),那么我想用 np.NaN 填充该值。
我试过下面的 function:
from numbers import Number
def fill_in(values):
if isinstance(values, Number) == False:
return np.NaN
然后我在列上使用.apply
function :
df['some_column'].apply(fill_in)
我期望:
index some_column
0 12345
1 23549
2 NaN
3 78516
4 98713
5 NaN
但反而得到:
index some_column
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
有人可以向我解释为什么我想错了吗?
提供给apply
的 function 必须具有所有输入的返回值。 在您的情况下,如果if
测试失败,则没有返回值。
在您的情况下,当 pandas 没有从 function 返回值时,它构成了 output 为NaN
,因为它没有什么可以放在那里。
添加负测试返回值应该可以得到所需的 output。
def fill_in(value):
if isinstance(value, Number) == False:
return np.NaN
else:
return value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.