使用map将Int32类型的新列添加到julia数据帧
我有一个字符串列数据,其值类似于使用map将Int32类型的新列添加到julia数据帧,julia,Julia,我有一个字符串列数据,其值类似于2.323456,我想创建一个新列,其Int32值如下:2323456 我尝试使用df[!,:newcolumn]和map函数创建一个新列,还使用parse将字符串解析为Int32 这很有效 但是,当我使用map执行额外的转换时,它将转换为Int64 这是我的输入数据: julia> df2 = DataFrame(low_str=["1.12345", "1.12346", "1.12347"]); julia> pretty_table(df2,
2.323456
,我想创建一个新列,其Int32值如下:2323456
我尝试使用df[!,:newcolumn]
和map
函数创建一个新列,还使用parse
将字符串解析为Int32
这很有效
但是,当我使用map执行额外的转换时,它将转换为Int64
这是我的输入数据:
julia> df2 = DataFrame(low_str=["1.12345", "1.12346", "1.12347"]);
julia> pretty_table(df2, markdown)
| low_str |
| String |
|---------|
| 1.12345 |
| 1.12346 |
| 1.12347 |
我想把它转换成Int32。因此,我:
julia> df2[!, :low] = map(x -> parse( Int32, string( x[1],x[3:7]) ), df2[:, :low_str]);
julia> pretty_table(df2, markdown)
| low_str | low |
| String | Int32 |
|---------|--------|
| 1.12345 | 112345 |
| 1.12346 | 112346 |
| 1.12347 | 112347 |
到目前为止还不错。
现在,我想向下四舍五入,因此:
julia> df2[!, :low] = map( x -> x - mod(x,5), df2[:, :low]);
julia> pretty_table(df2, markdown)
| low_str | low |
| String | Int64 |
|---------|--------|
| 1.12345 | 112345 |
| 1.12346 | 112345 |
| 1.12347 | 112345 |
数据被正确地向下舍入,但现在它的类型是Int64,而不是预期的Int32
如何保存Int32?最简单的方法是:
如果你想使用map代码>然后类似这样的操作会产生所需的结果:
map!(x -> x - mod(x,5), df2.low, df2.low)
通常,您不必使用map
或map代码>现在很多。大多数事情都可以通过广播和广播分配来完成。
map!(x -> x - mod(x,5), df2.low, df2.low)