2017-05-03 52 views
3

我想将Julia中的列数据类型从字符串更改为int,但目前为止还没有运气。 convert()parse()都不起作用。有没有办法做到这一点?在Julia的DataFrame中将列类型从String转换为Int

我尝试了这些,但没有工作

df[:serial] = int.(collect(df[:strSerial])) df[:serial] = map(x->parse(Int,x),df[:strSerial]) df[:serial] = Int64(df[:strSerial])

+0

是什么这之间的区别[我怎样才能改变列数据类型从浮动到字符串在Julia?](http://stackoverflow.com/questions/43605432/how-can-i-change-column-data-type-from-float-to-string-in-julia?) –

+0

@ Atomic_alarm的区别是相同风格的语法不起作用 – bensw

回答

5

parse()应该工作:

df = DataFrame(
    yearsAsString = ["2016", "2017", "2018"] 
) 
df[:years] = [parse(Int,x) for x in df[:yearsAsString]] 

df 

3×2 DataFrames.DataFrame 
│ Row │ yearsAsString │ years │ 
├─────┼───────────────┼───────┤ 
│ 1 │ "2016"  │ 2016 │ 
│ 2 │ "2017"  │ 2017 │ 
│ 3 │ "2018"  │ 2018 │ 

(记得用Int与资本I)

编辑(感谢马特B)

在当前朱莉娅0.5.1(和0.6阿尔法)这工作太:

df[:y2] = parse.([Int],df[:yearsAsString]) 

在朱莉娅0.6只:

df[:y2] = parse.(Int,df[:yearsAsString]) 
+0

非常感谢。这是完美的。 – bensw

+0

我很想拥有一个重载的解析函数,例如'df [:x2] = parse(Int,df [:x])' – Antonello

+1

@Antonello - 在Julia 0.6上可以使用点广播:'parse。(Int,df [:x])''。 –

相关问题