簡體   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