Csv 获取JuliaDB.loadtable()以将所有列解析为字符串

Csv 获取JuliaDB.loadtable()以将所有列解析为字符串,csv,julia,juliadb,Csv,Julia,Juliadb,我希望JuliaDB.loadtable()读取一个CSV(实际上是一堆CSV,但为了简单起见,让我们只尝试一个),其中所有列都被解析为字符串 以下是我尝试过的: using CSV using DataFrames using JuliaDB df1 = DataFrame( [['a', 'b', 'c'], [1, 2, 3]], ["name", "id"] ) CSV.write("df1.csv", df1) # This works, but if I hav

我希望JuliaDB.loadtable()读取一个CSV(实际上是一堆CSV,但为了简单起见,让我们只尝试一个),其中所有列都被解析为字符串

以下是我尝试过的:

using CSV
using DataFrames
using JuliaDB

df1 = DataFrame(
    [['a', 'b', 'c'], [1, 2, 3]],
    ["name", "id"]
)

CSV.write("df1.csv", df1)

# This works, but if I have 10+ columns it would get unwieldy
df1 = loadtable("df1.csv"; colparsers=Dict(:name=>String, :id=>String),)

# This doesn't work
df1 = loadtable("df1.csv"; colparsers=String,)
# MethodError: no method matching iterate(::Type{String})
下面是在R中的实现方式:

df1=read.csv(“df1.csv”,colClasses=“character”)

如果您知道列的数量(或者只是列的上限),我认为您可以使用类型(来自
CSV.jl
文档):


类型:用于列类型的类型的向量或Dict;Dict可以将列索引Int、名称符号或字符串映射为列的类型,即Dict(1=>Float64)将第一列设置为Float64,Dict(:column1=>Float64)将名为column1的列设置为Float64,Dict(“column1”=>Float64)将column1设置为Float64;如果提供了向量,则它必须与标题中提供或检测到的列数相匹配

如果您知道列数(或只是列数的上限),我认为您可以使用类型(来自
CSV.jl
文档):


类型:用于列类型的类型的向量或Dict;Dict可以将列索引Int、名称符号或字符串映射为列的类型,即Dict(1=>Float64)将第一列设置为Float64,Dict(:column1=>Float64)将名为column1的列设置为Float64,Dict(“column1”=>Float64)将column1设置为Float64;如果提供了向量,则它必须与标题中提供或检测到的列数相匹配

如果您事先知道列数,可以尝试
df1=loadtable(“df1.csv;colparsers=[String for uuu in 1:2])
如果您事先知道列数,可以尝试
df1=loadtable(“df1.csv;colparsers=[String for u in 1:2])