2014-10-05 42 views
21

我正在試用Julia DataFrames模塊。我對它感興趣,所以我可以用它在Gadfly中繪製簡單的模擬。我希望能夠迭代地將行添加到數據框,並且我想將其初始化爲空。julia創建一個空的數據框並向其添加行

關於如何做到這一點的教程/文檔很少(大多數文檔描述瞭如何分析導入的數據)。

要附加到一個非空數據幀是直截了當:

df = DataFrame(A = [1, 2], B = [4, 5]) 
push!(df, [3 6]) 

這將返回。

3x2 DataFrame 
| Row | A | B | 
|-----|---|---| 
| 1 | 1 | 4 | 
| 2 | 2 | 5 | 
| 3 | 3 | 6 | 

但是對於空的init我得到錯誤。

df = DataFrame(A = [], B = []) 
push!(df, [3, 6]) 

錯誤消息:

ArgumentError("Error adding 3 to column :A. Possible type mis-match.") 
while loading In[220], in expression starting on line 2 

什麼是初始化的最佳途徑空朱莉婭數據幀,這樣你可以反覆添加項目後來在for循環?

+0

我無法重現DataFrames V該錯誤消息。0.7.4關於朱莉婭0.4.5。 – esel 2016-07-08 09:51:32

回答

24

僅使用[]定義的零長度數組缺少足夠的類型信息。

julia> typeof([]) 
Array{None,1} 

所以要避免這個問題是簡單的指出類型。

julia> typeof(Int64[]) 
Array{Int64,1} 

而且你可以應用到你的數據幀的問題

julia> df = DataFrame(A = Int64[], B = Int64[]) 
0x2 DataFrame 

julia> push!(df, [3 6]) 

julia> df 
1x2 DataFrame 
| Row | A | B | 
|-----|---|---| 
| 1 | 3 | 6 | 
+9

那你知道DataFrame將會變大的情況怎麼樣?預先初始化效率更高嗎?例如'DataFrame(Int64,1000,10)'那麼迭代時填充每一行的語法是什麼? – bjmc 2014-10-12 04:33:56

相關問題