使用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)