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