繁体   English   中英

在列中,用“NaN”填充不是数字的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM