2015-10-15 98 views
0

我有一個SQLite數據庫,我讀入Julia的DataFrame中。當值缺失時,它們被賦予類型SQLite.Null,這很難處理。我寧願他們是新生。有沒有簡單的方法來做這種轉換?我的方式如下:Julia:如何用DataFrame中的NA替換SQLite.Null

using DataFrames, SQLite 

df = DataFrame() 
df[:x1] = [1, SQLite.NullType(), 3, 4] 
df[:x2] = ["A", "B", SQLite.NullType(), "D"] 

function repNull(x) 
    if isa(x, SQLite.NullType) 
     return(NA) 
    else 
     return(x) 
    end 
end 

df[:1] = map(repNull, df[:x1]) 
df[:2] = map(repNull, df[:x2]) 

有沒有更優雅和/或有效的方法?

我找過這個問題,但我對Julia很新,所以我可能一直在使用錯誤的術語。

回答

4

以下看起來可讀性和快速性。

for col in df.columns 
    col[col.==SQLite.NULL]=NA 
end 

一個好奇的事情要注意的是NA在「平等」下的「特殊」行爲。因此,如果數據幀中已經存在NAs(即操作不是冪等的),上述解決方案可能會拋出異常。

+1

修復現有的'NA'問題,可以使用以下代碼:'col [map(typeof,col)。== SQLite.NullType] = NA'而不是當前的'for'主體。 –