Dataframe 如何在Julia中将列数据类型从float更改为string?
我正在尝试将数据帧格式的一列从float转换为string。我试过了Dataframe 如何在Julia中将列数据类型从float更改为string?,dataframe,julia,Dataframe,Julia,我正在尝试将数据帧格式的一列从float转换为string。我试过了 df = readtable("data.csv", coltypes = {String, String, String, String, String, Float64, Float64, String}); dfB[:serial] = string(dfB[:serial]) 但是我被投诉了 syntax: { } vector syntax is discontinued 我也试过 df = readtable
df = readtable("data.csv", coltypes = {String, String, String, String, String, Float64, Float64, String});
dfB[:serial] = string(dfB[:serial])
但是我被投诉了
syntax: { } vector syntax is discontinued
我也试过
df = readtable("data.csv", coltypes = {String, String, String, String, String, Float64, Float64, String});
dfB[:serial] = string(dfB[:serial])
但它也不起作用。所以,我想知道在Julia中更改列数据类型的正确方法是什么
thx在您第一次尝试时,Julia会告诉您问题所在-您无法使用
{}
生成向量,您需要使用[]
。此外,关键字参数的名称应该是eltypes
,而不是coltypes
在第二次尝试中,你没有一个浮点数,你有一个浮点数向量。因此,要更改类型,需要更改所有元素的类型。在Julia中,向量上的元素操作由“点”语法概括,例如
string.(collect(dfB[:serial]))
。当前需要collect
,以便首先将DataArray强制转换为普通阵列–如果DataArray包含NAs,则此操作将失败。我知道数据帧接口仍然很不稳定,所以像这个ATM机可能会有一些麻烦。谢谢你的回答。不幸的是,这两种方法在我的情况下都不起作用。第一个建议的解决方案提出了“MethodError:no method matching readtable(::String;coltypes=DataType[String,String,String,Float64,Float64,String]),第二个建议的解决方案提出了“MethodError:Cannotconvert
将String类型的对象转换为Int64类型的对象这可能是调用构造函数Int64(…),因为类型构造函数回退到转换方法。“。知道为什么吗?字符串。(x)
调用绝对不应该引发该异常。似乎您正在尝试从String
转换为Int
,而不是相反。你能显示你运行的代码吗?可能是一个演示数据集?它确实会导致错误,抱歉。真奇怪。目前的一个解决方法是string.(collect(df[:serial]))
,它在转换为string.untested之前将数据数组转换为数组-但是@bensw它至少应该是eltypes
而不是coltypes
@Michael K.Borreardstring.(collect(df[:serial])
)eltypes
也适用于[]
,但不适用于{}
。您还可以更新第一次尝试的解决方案吗?我将把你的答案标为正确答案。非常感谢。