Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Concatenate DataFrames.DataFrame in Julia

I have a problem when I try to concatenate multiple DataFrames (a datastructure from the DataFrames package!) with the same columns but different row numbers. Here's my code:

using(DataFrames)
DF = DataFrame()
DF[:x1]   = 1:1000
DF[:x2]   = rand(1000)
DF[:time] = append!( [0] , cumsum( diff(DF[:x1]).<0 ) ) + 1



DF1 = DF[DF[:time] .==1,:]
DF2 = DF[DF[:time] .==round(maximum(DF[:time])),:]
DF3 = DF[DF[:time] .==round(maximum(DF[:time])/4),:]
DF4 = DF[DF[:time] .==round(maximum(DF[:time])/2),:]

DF1[:T] = "initial"
DF2[:T] = "final"
DF3[:T] = "1/4"
DF4[:T] = "1/2"

DF = [DF1;DF2;DF3;DF4]

The last line gives me the error

MethodError: Cannot `convert` an object of type DataFrames.DataFrame to an object of type LastMain.LastMain.LastMain.DataFrames.AbstractDataFrame
This may have arisen from a call to the constructor LastMain.LastMain.LastMain.DataFrames.AbstractDataFrame(...),
since type constructors fall back to convert methods.

I don't understand this error message. Can you help me out? Thanks!


1 Answers

I just ran into this exact problem on Julia 0.5.0 x86_64-linux-gnu, DataFrames 0.8.5, with both hcat and vcat.

Neither clearing the workspace nor reloading DataFrames solved the problem, but restarting the REPL fixed it immediately.

like image 159
RedHand Avatar answered Oct 21 '25 07:10

RedHand