Copycols in DataFrame and CSV package not working in julia 1.7.2

Hello, Good Morning

I’m trying to make a immutable dataframe from a csv, but seems copycols = false parameter is not working on julia 1.7.2. Am I did in an obsolete way?

data_immutable = CSV.read("purchaseData.csv", copycols = false, DataFrame)

Code above needs to generate an immutable DataFrame

@quinnj will know best but I think you need:

DataFrame(CSV.File(“purchaseData.csv”), copycols = false)

and note that this data frame will be mutable, only its columns will be immutable.
If you need a fully immutable table just use CSV.File("purchaseData.csv").

(this is outdated - please see @quinnj comment)

2 Likes

Did this, but colums are mutable. According my book, this columns should be immutable

# %%
data_immutable = DataFrame(CSV.File("purchaseData.csv"), copycols = false)

# %%
try
    data_immutable[1, :Name] = "YARDEN"
catch
    @warn "Cannot: data_immutable is immutable" # should fail here
end

# %%
data_immutable[1, :Name]

There is no way to get immutable columns from CSV.jl when reading with CSV.File/CSV.read. In the single threaded case, normal Vector or SentinelVector are returned, in the multithreaded case ChainedVector of the former vector types are returned.

1 Like

I think this was changed in new versions of julia. This book is not so old. It has only one year. Then, are there no way to get a imuttable DataFrame?

There has never been an immutable DataFrame. Can you share the resource you are using? Maybe there is a misunderstanding somewhere.

Ah - right. The immutability was dropped :).

1 Like

Let’s see, I think it was back in the 0.7.X releases, immutable columns were returned, but that was several years ago at this point. This material must have been based on that.

1 Like

If an immutable DataFrame is really needed for some reason, you could convert the data into the Arrow.jl format; it returns immutable columns by default (the data format itself is immutable).

I’ll will need to stop buying julia books. The amount of break changes between versions are constant. I had issues with obsolescense every year.

No need to be imuttable. I was only training using a book. No problem.