CSV read fails with keyword arguments

I’m having difficulties getting a basic CSV file to read. I can read a file without keyword options:

acs = CSV.read("file.csv", limit=10);

but adding keyword options, like

acs = CSV.read("file.csv"; null="NA");

results in the following error:

MethodError: no method matching CSV.File(::CSV.Header{false,Parsers.Options{false,false,true,false,Missing,UInt8,Nothing},Array{UInt8,1}}; debug=false, typemap=Dict{Type,Type}(), null="NA")
Closest candidates are:
  CSV.File(::CSV.Header; startingbyteposition, endingbyteposition, limit, threaded, typemap, tasks, debug) at /Users/madeleine/.julia/packages/CSV/MKemC/src/file.jl:220 got unsupported keyword argument "null"
  CSV.File(::Any; header, normalizenames, datarow, skipto, footerskip, transpose, comment, use_mmap, ignoreemptylines, select, drop, missingstrings, missingstring, delim, ignorerepeated, quotechar, openquotechar, closequotechar, escapechar, dateformat, dateformats, decimal, truestrings, falsestrings, type, types, typemap, categorical, pool, lazystrings, strict, silencewarnings, debug, parsingdebug, kw...) at /Users/madeleine/.julia/packages/CSV/MKemC/src/file.jl:174

 [1] kwerr(::NamedTuple{(:debug, :typemap, :null),Tuple{Bool,Dict{Type,Type},String}}, ::Type{T} where T, ::CSV.Header{false,Parsers.Options{false,false,true,false,Missing,UInt8,Nothing},Array{UInt8,1}}) at ./error.jl:157
 [2] CSV.File(::String; header::Int64, normalizenames::Bool, datarow::Int64, skipto::Nothing, footerskip::Int64, transpose::Bool, comment::Nothing, use_mmap::Nothing, ignoreemptylines::Bool, select::Nothing, drop::Nothing, missingstrings::Array{String,1}, missingstring::String, delim::Nothing, ignorerepeated::Bool, quotechar::Char, openquotechar::Nothing, closequotechar::Nothing, escapechar::Char, dateformat::Nothing, dateformats::Nothing, decimal::UInt8, truestrings::Array{String,1}, falsestrings::Array{String,1}, type::Nothing, types::Nothing, typemap::Dict{Type,Type}, categorical::Nothing, pool::Float64, lazystrings::Bool, strict::Bool, silencewarnings::Bool, debug::Bool, parsingdebug::Bool, kw::Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:null,),Tuple{String}}}) at /Users/madeleine/.julia/packages/CSV/MKemC/src/file.jl:217
 [3] read(::String, ::Nothing; copycols::Bool, kwargs::Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:null,),Tuple{String}}}) at /Users/madeleine/.julia/packages/CSV/MKemC/src/CSV.jl:44
 [4] top-level scope at In[10]:1
 [5] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091

For reference, here is the output of ] st -m:

  [1520ce14] AbstractTrees v0.3.3
  [79e6a3ab] Adapt v2.0.2
  [7d9fca2a] Arpack v0.4.0
  [68821587] Arpack_jll v3.5.0+3
  [bf4720bc] AssetRegistry v0.1.0
  [c52e3926] Atom v0.12.21
  [13072b0f] AxisAlgorithms v1.0.0
  [9e28174c] BinDeps v1.0.1
  [ad839575] Blink v0.12.3
  [6e34b625] Bzip2_jll v1.0.6+4
  [70588ee8] CSSUtil v0.1.1
  [00ebfdb7] CSTParser v2.5.0
  [336ed68f] CSV v0.7.7
  [324d7699] CategoricalArrays v0.8.2
  [aaaa29a8] Clustering v0.14.1
  [53a63b46] CodeTools v0.7.1
  [da1fd8a2] CodeTracking v1.0.1
  [35d6a980] ColorSchemes v3.9.0
  [3da002f7] ColorTypes v0.10.9
  [5ae59095] Colors v0.12.4
  [a80b9123] CommonMark v0.6.4
  [34da2185] Compat v3.15.0
  [e66e0078] CompilerSupportLibraries_jll v0.3.3+0
  [8f4d0f93] Conda v1.4.1
  [d38c429a] Contour v0.5.4
  [a8cc5b0e] Crayons v4.0.4
  [9a962f9c] DataAPI v1.3.0
  [a93c6f00] DataFrames v0.21.7
  [864edb3b] DataStructures v0.18.4
  [e2d170a0] DataValueInterfaces v1.0.0
  [e7dc6d0d] DataValues v0.4.13
  [b4f34e82] Distances v0.8.2
  [31c24e10] Distributions v0.23.11
  [33d173f1] DocSeeker v0.4.1
  [ffbed154] DocStringExtensions v0.8.3
  [e30172f5] Documenter v0.25.2
  [c87230d0] FFMPEG v0.4.0
  [b22a6f82] FFMPEG_jll v4.3.1+2
  [7a1cc6ca] FFTW v1.2.4
  [f5851436] FFTW_jll v3.3.9+5
  [5789e2e9] FileIO v1.4.3
  [1a297f60] FillArrays v0.9.6
  [53c48c17] FixedPointNumbers v0.8.4
  [08572546] FlameGraphs v0.2.4
  [d7e528f0] FreeType2_jll v2.10.1+4
  [559328eb] FriBidi_jll v1.0.5+5
  [de31a74c] FunctionalCollections v0.5.0
  [fb4132e2] FuzzyCompletions v0.2.3
  [28b8d3ca] GR v0.52.0
  [5c1252a2] GeometryBasics v0.2.15
  [4d00f742] GeometryTypes v0.8.3
  [cd3eb016] HTTP v0.8.17
  [9fb69e20] Hiccup v0.2.2
  [7073ff75] IJulia v1.21.3
  [6deec6e2] IndexedTables v0.13.0
  [9b13fd28] IndirectArrays v0.5.1
  [83e8ac13] IniFile v0.5.0
  [1d5cc7b8] IntelOpenMP_jll v2018.0.3+0
  [c601a237] Interact v0.10.3
  [d3863d7c] InteractBase v0.10.5
  [a98d9a8b] Interpolations v0.12.10
  [41ab1584] InvertedIndices v1.0.0
  [c8e1da08] IterTools v1.3.0
  [82899510] IteratorInterfaceExtensions v1.0.0
  [97c1335a] JSExpr v0.5.2
  [682c06a0] JSON v0.21.1
  [98e50ef6] JuliaFormatter v0.7.5
  [aa1ae85d] JuliaInterpreter v0.7.26
  [e5e0dc1b] Juno v0.8.3
  [5ab0869b] KernelDensity v0.6.0
  [bcebb21b] Knockout v0.2.4
  [c1c5ebd0] LAME_jll v3.100.0+2
  [7c4cb9fa] LNR v0.2.1
  [b964fa9f] LaTeXStrings v1.1.0
  [50d2b5c4] Lazy v0.15.1
  [1d6d02ad] LeftChildRightSiblingTrees v0.1.2
  [dd192d2f] LibVPX_jll v1.9.0+0
  [856f044c] MKL_jll v2020.2.254+0
  [1914dd2f] MacroTools v0.5.5
  [739be429] MbedTLS v1.0.2
  [c8ffd9c3] MbedTLS_jll v2.16.8+0
  [442fdcdd] Measures v0.3.1
  [e89f7d12] Media v0.5.0
  [e1d29d7a] Missings v0.4.4
  [6f286f6a] MultivariateStats v0.7.0
  [ffc61752] Mustache v1.0.5
  [a975b10e] Mux v0.7.0
  [77ba4419] NaNMath v0.3.4
  [b8a86587] NearestNeighbors v0.4.4
  [47be7bcc] ORCA v0.5.0
  [510215fc] Observables v0.3.1
  [6fe1bfb0] OffsetArrays v1.1.3
  [e7412a2a] Ogg_jll v1.3.4+1
  [925886fa] OnlineStatsBase v1.4.3
  [4536629a] OpenBLAS_jll v0.3.10+0
  [458c3c95] OpenSSL_jll v1.1.1+5
  [efe28fd5] OpenSpecFun_jll v0.5.3+3
  [91d4177d] Opus_jll v1.3.1+2
  [bac558e1] OrderedCollections v1.3.0
  [90014a1f] PDMats v0.10.0
  [d96e819e] Parameters v0.12.1
  [69de0a69] Parsers v1.0.10
  [fa939f87] Pidfile v1.2.0
  [14b8a8f1] PkgTemplates v0.7.10
  [ccf2f8ad] PlotThemes v2.0.0
  [995b91a9] PlotUtils v1.0.6
  [a03496cd] PlotlyBase v0.4.1
  [f0f68f2c] PlotlyJS v0.14.0
  [91a5bcdd] Plots v1.6.3
  [2dfb63ee] PooledArrays v0.5.3
  [1fd47b50] QuadGK v2.4.1
  [c84ed2f1] Ratios v0.4.0
  [3cdcf5f2] RecipesBase v1.0.2
  [01d81517] RecipesPipeline v0.1.12
  [189a3867] Reexport v0.2.0
  [ae029012] Requires v1.0.2
  [79098fc4] Rmath v0.6.1
  [f50d1b31] Rmath_jll v0.2.2+1
  [91c51154] SentinelArrays v1.2.15
  [992d4aef] Showoff v0.3.1
  [b85f4697] SoftGlobalScope v1.1.0
  [a2af1166] SortingAlgorithms v0.3.1
  [276daf66] SpecialFunctions v0.10.3
  [90137ffa] StaticArrays v0.12.4
  [2913bbd2] StatsBase v0.33.1
  [4c63d2b9] StatsFuns v0.9.5
  [f3b207a7] StatsPlots v0.14.13
  [88034a9c] StringDistances v0.6.5
  [09ab397b] StructArrays v0.4.4
  [856f2bd8] StructTypes v1.1.0
  [ab02a1b2] TableOperations v0.2.1
  [3783bdb8] TableTraits v1.0.0
  [382cd787] TableTraitsUtils v1.0.1
  [bd369af6] Tables v1.0.5
  [0796e94c] Tokenize v0.5.8
  [a2a6695c] TreeViews v0.3.0
  [30578b45] URIParser v0.4.1
  [3a884ed6] UnPack v1.0.2
  [81def892] VersionParsing v1.2.0
  [ea10d353] WeakRefStrings v0.6.2
  [0f1e0344] WebIO v0.8.14
  [104b5d7c] WebSockets v1.5.2
  [cc8bc4a8] Widgets v0.6.2
  [efce3f68] WoodburyMatrices v0.5.2
  [c2297ded] ZMQ v1.2.1
  [8f1865be] ZeroMQ_jll v4.3.2+4
  [83775a58] Zlib_jll v1.2.11+16
  [0ac62f75] libass_jll v0.14.0+3
  [f638f0a6] libfdk_aac_jll v0.1.6+3
  [f27f6e37] libvorbis_jll v1.3.6+5
  [1270edf5] x264_jll v2020.7.14+1
  [dfaa095f] x265_jll v3.0.0+2
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8bb1440f] DelimitedFiles
  [8ba89e20] Distributed
  [7b1f6079] FileWatching
  [9fa8497b] Future
  [b77e0a4c] InteractiveUtils
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [44cfe95a] Pkg
  [de0858da] Printf
  [9abbd945] Profile
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA
  [9e88b42a] Serialization
  [1a1011a3] SharedArrays
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics
  [4607b0f0] SuiteSparse
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode

That’s because null isn’t a supported keyword argument.l for CSV.read. You’re looking for missingstring; you can see the supported keyword arguments by looking at the docs, like ?CSV.File

Ay, thanks. It’s the oldest Julia error in the book: assuming the documentation that comes up on Google is the most recent documentation. Here’s the hit I got for “julia csv read na”: https://juliadata.github.io/CSV.jl/v0.1.1/

1 Like

For me it’s

Have I ever mentioned that I hate personalized search results?

hmm, would duckduckgo or bing help? could go baidu or yandex too.

1 Like

I am using qwant in general, but I still have the experience that google is sometimes best for IT related search results.

1 Like

I think the second link in your screenshot actually points to v0.1.1. At least that’s what I get when doing the same search on Google in private mode.

There might be a way to tell Google to show only the most recent version. I remember discussions about that.

1 Like

Actually there’s a setting in Documenter to avoid this kind of problem, and a PR has recently been merged in CSV.jl to use it. But apparently a few releases did not get the fix. I’ll try to fix that (EDIT: see this PR).