user7295926
user7295926

Reputation:

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!

Upvotes: 4

Views: 6591

Answers (1)

RedHand
RedHand

Reputation: 309

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.

Upvotes: 3

Related Questions