Thanks Michael, I been thinking about this all day. Yes, basically I am going to have to create a macro *CSVreadtable* that mimics the *readtable* command, but in the expantion uses *CSV.read*. The macro will manually constructs a similar readtable sized dataframe array, but use the column types I specify or inherit from the original readtable command. The macro can use the current CSV.read parameters.
So this would work. *df1_CSVreadtable = CSVreadtable("$df1_path"; types=Dict(1=>String))* so a: *eltypes(df1_CSVreadtable)* 3-element Array{Type,1}: Int32 String String Anyway, I was looking for a quick fix, but it least I will learn some Julia. On Thursday, November 3, 2016 at 4:05:23 PM UTC-4, Michael Borregaard wrote: > > DataFrames is currently undergoing a very major change. Looks like CSV > creates the new type of DataFrames. I hope someone can help you with using > that. As a workaround, on the normal DataFrames version, I have generally > just replaced with a string representation: > ``` > df[:account_numbers] = ["$account_number" for account_number in > df[:account_numbers]] > > On Thu, Nov 3, 2016 at 3:05 PM, LeAnthony Mathews <leant...@gmail.com > <javascript:>> wrote: > >> Sure, so I need col #1 in my CSV to be a string in my data frame. >> >> So as a test I tried to load the file 3 different ways: >> >> *df1_CSV = CSV.read("$df1_path"; types=Dict(1=>String)) #forcing the >> column to stay a string* >> *df1_readtable = readtable("$df1_path") #Do not know how to force the >> column to stay a string* >> *df1_convertDF = convert(DataFrame, df1_CSV)* >> >> Here is the output: If they are all dataframes then showcols should work >> an all three df1: >> >> *julia> names(df1_CSV)* >> 3-element Array{Symbol,1}: >> :account_number >> Symbol("Discharge Date") >> :site >> >> *julia> names(df1_readtable)* >> 3-element Array{Symbol,1}: >> :account_number >> :Discharge_Date >> :site >> >> *julia> names(df1_convertDF)* >> 3-element Array{Symbol,1}: >> :account_number >> Symbol("Discharge Date") >> :site >> >> >> *julia> eltypes(df1_CSV)* >> 3-element Array{Type,1}: >> Nullable{String} >> Nullable{WeakRefString{UInt8}} >> Nullable{WeakRefString{UInt8}} >> >> *julia> eltypes(df1_readtable)* >> 3-element Array{Type,1}: >> Int32 *#Do not know how to force the column to stay a string* >> String >> String >> >> *julia> eltypes(df1_convertDF)* >> 3-element Array{Type,1}: >> Nullable{String} >> Nullable{WeakRefString{UInt8}} >> Nullable{WeakRefString{UInt8}} >> >> *julia> showcols(df1_convertDF)* >> 1565x3 DataFrames.DataFrame >> ERROR: MethodError: no method matching >> countna(::NullableArrays.NullableArray{St >> ring,1}) >> Closest candidates are: >> countna(::Array{T,N}) at >> C:\Users\lmathews\.julia\v0.5\DataFrames\src\other\ut >> ils.jl:115 >> countna(::DataArrays.DataArray{T,N}) at >> C:\Users\lmathews\.julia\v0.5\DataFram >> es\src\other\utils.jl:128 >> countna(::DataArrays.PooledDataArray{T,R<:Integer,N}) at >> C:\Users\lmathews\.ju >> lia\v0.5\DataFrames\src\other\utils.jl:143 >> in colmissing(::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0.5\DataFram >> es\src\abstractdataframe\abstractdataframe.jl:657 >> in showcols(::Base.TTY, ::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0. >> 5\DataFrames\src\abstractdataframe\show.jl:574 >> in showcols(::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0.5\DataFrames >> \src\abstractdataframe\show.jl:581 >> >> *julia> showcols(df1_readtable)* >> 1565x3 DataFrames.DataFrame >> │ Col # │ Name │ Eltype │ Missing │ >> ├───────┼────────────────┼────────┼─────────┤ >> │ 1 │ account_number │ Int32 │ 0 │ >> │ 2 │ Discharge_Date │ String │ 0 │ >> │ 3 │ site │ String │ 0 │ >> >> *julia> showcols(df1_CSV)* >> 1565x3 DataFrames.DataFrame >> ERROR: MethodError: no method matching >> countna(::NullableArrays.NullableArray{St >> ring,1}) >> Closest candidates are: >> countna(::Array{T,N}) at >> C:\Users\lmathews\.julia\v0.5\DataFrames\src\other\ut >> ils.jl:115 >> countna(::DataArrays.DataArray{T,N}) at >> C:\Users\lmathews\.julia\v0.5\DataFram >> es\src\other\utils.jl:128 >> countna(::DataArrays.PooledDataArray{T,R<:Integer,N}) at >> C:\Users\lmathews\.ju >> lia\v0.5\DataFrames\src\other\utils.jl:143 >> in colmissing(::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0.5\DataFram >> es\src\abstractdataframe\abstractdataframe.jl:657 >> in showcols(::Base.TTY, ::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0. >> 5\DataFrames\src\abstractdataframe\show.jl:574 >> in showcols(::DataFrames.DataFrame) at >> C:\Users\lmathews\.julia\v0.5\DataFrames >> \src\abstractdataframe\show.jl:581 >> >> >> >> On Thursday, November 3, 2016 at 8:54:19 AM UTC-4, Michael Borregaard >> wrote: >>> >>> The result of CSV should be a DataFrame by default. What return type do >>> you get? >>> >> >