Hello Jacob, see below:

julia> Pkg.installed()
Dict{String,VersionNumber} with 25 entries:
  "DataFrames"        => v"0.8.4"
  "DataStreams"       => v"0.1.2"
  "Calculus"          => v"0.1.15"
  "Reexport"          => v"0.0.3"
  "BinDeps"           => v"0.4.5"
  "Rmath"             => v"0.1.4"
  "Dates"             => v"0.4.4"
  "NullableArrays"    => v"0.0.10"
  "URIParser"         => v"0.1.6"
  "GZip"              => v"0.2.20"
  "CSV"               => v"0.1.1"
  "RDatasets"         => v"0.2.0"
  "SortingAlgorithms" => v"0.1.0"
  "Compat"            => v"0.9.3"
  "FileIO"            => v"0.2.0"
  "Distributions"     => v"0.11.0"
  "DataArrays"        => v"0.3.9"
  "PDMats"            => v"0.5.0"
  "SHA"               => v"0.2.1"
  "StatsBase"         => v"0.11.1"
  "XGBoost"           => v"0.2.0"
  "RData"             => v"0.0.4"
  "WeakRefStrings"    => v"0.2.0"
  "StatsFuns"         => v"0.3.1"
  "CategoricalArrays" => v"0.1.0"

On Thursday, November 3, 2016 at 5:19:04 PM UTC-4, Jacob Quinn wrote:
>
> LeAnthony,
>
> I'm wondering if you're on an old version of DataFrames? There haven't 
> been any issues "show"-ing DataFrames with NullableArray columns for quite 
> some time. You can check (and post back here) your current package versions 
> by doing:
>
> Pkg.installed()
>
> You can also ensure you're on the latest valid release by doing:
>
> Pkg.update()
>
>
> -Jacob
>
> On Thu, Nov 3, 2016 at 3:15 PM, Milan Bouchet-Valat <nali...@club.fr 
> <javascript:>> wrote:
>
>> Le jeudi 03 novembre 2016 à 13:35 -0700, LeAnthony Mathews a écrit :
>> > 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.
>> If you don't have missing values and just want a Vector{String}, you
>> can pass nullable=false to CSV.read().
>>
>>
>> Regards
>>
>> >
>> >
>> > > 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.c
>> > > om> 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
>> > > >
>> > > >
>> > > >
>> > > > > The result of CSV should be a DataFrame by default.  What
>> > > > > return type do you get?
>> > > > >
>> > > >
>> > >
>> > >
>>
>
>

Reply via email to