如何在DataFrames.jl中修改数据类型?String转Int报错求解
DataFrames.jl字符串转整数报错的原因及解决方法
报错原因
这段代码报错的核心是类型不匹配:df.x是一个String类型的向量,你试图把parse(Int, df.x[1])得到的Int值直接塞进这个字符串向量里,而Julia的向量要求所有元素类型必须一致,这种跨类型的单个元素赋值自然会触发错误。
解决方法
这里给你几种实用的处理方式:
直接修改原列类型
直接把整列的字符串批量转成整数,替换原列:using DataFrames df = DataFrame(x=["1","2","3"]) df.x = parse.(Int, df.x)这里
parse.(Int, df.x)是广播调用parse函数,一次性把列里所有字符串转成整数,生成一个Int类型的向量,再赋值给df.x,从根源上解决类型问题。新增转换后的列(保留原列)
如果不想改动原字符串列,可以用transform新增一列整数类型的数据:df = transform(df, :x => ByRow(x -> parse(Int, x)) => :x_int)执行后会新增一列
:x_int,里面就是转换后的整数,原列:x保持不变。初始化时直接指定类型
如果提前知道输入的字符串可以转成整数,初始化DataFrame的时候就直接转换:df = DataFrame(x=parse.(Int, ["1","2","3"]))
内容的提问来源于stack exchange,提问作者wanderinganon
相关产品推荐
相关产品推荐

