dataframe - Julia:将 DataFrame 中的列类型从 Integer 转换为 Float64

标签 dataframe julia

我正在尝试将 DataFrame 列中的数字类型从整数更改为浮点。这样做应该很简单,但它不起作用。数据类型仍然是整数。我错过了什么?

In  [2]: using DataFrames
df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])

Out [2]: 4x2 DataFrame
| Row | A | B   |
|-----|---|-----|
| 1   | 1 | "M" |
| 2   | 2 | "F" |
| 3   | 3 | "F" |
| 4   | 4 | "M" |

In  [3]: df[:,:A] = float64(df[:,:A])

Out [3]: 4-element DataArray{Float64,1}:
 1.0
 2.0
 3.0
 4.0

In  [4]: df

Out [4]: 4x2 DataFrame
| Row | A | B   |
|-----|---|-----|
| 1   | 1 | "M" |
| 2   | 2 | "F" |
| 3   | 3 | "F" |
| 4   | 4 | "M" |

In  [5]: typeof(df[:,:A])

Out [5]: DataArray{Int64,1} (constructor with 1 method)

最佳答案

发生这种情况的原因是突变和转换。 如果你有两个向量

a = [1:3]
b = [4:6]

您可以通过赋值使 x 引用其中之一。

x = a

现在,xa 引用相同的向量[1, 2, 3]。如果您随后将 b 分配给 x

x = b

您现在已更改 x 以引用与 b 引用的相同向量。

您还可以通过将一个向量中的值复制到另一个向量来改变向量。如果你这样做

x[:] = a

您将向量 a 中的值复制到向量 b,因此现在您有两个带有 [1, 2, 3] 的向量>。

然后还有转换。如果将一种类型的值复制到另一种值的向量中,Julia 将尝试将该值转换为元素向量的值。

x[1] = 5.0

这将为您提供向量 [5, 2, 3],因为 Julia 将 Float645.0 转换为 Int 5。如果您尝试过

x[1] = 5.5

Julia 将抛出 InexactError(),因为 5.5 无法无损转换为整数。

当涉及到 DataFrame 时,只要您意识到 DataFrame 是对向量的命名引用的集合,事情的工作原理都是一样的。那么在这个调用中构造 DataFrame 时你在做什么

df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])

是您创建向量[1, 2, 3, 4]和向量["M", "F", "F", "M"]。然后,您可以引用这两个新向量构建一个 DataFrame。

稍后当你这样做时

df[:,:A] = float64(df[:,:A])

首先,通过将向量 [1, 2, 3, 4] 中的值转换为 Float64 来创建一个新向量。然后,您可以通过将 Float64 向量中的值复制回 Int 向量来改变 df[:A] 引用的向量,这导致 Julia 将值转换回 Int

科林·T·鲍尔的回答

df[:A] = float64(df[:A])

所做的是,他没有改变 DataFrame 引用的向量,而是更改引用以引用具有 Flaot64 值的向量。

我希望这是有道理的。

关于dataframe - Julia:将 DataFrame 中的列类型从 Integer 转换为 Float64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756206/

相关文章:

python - 根据另一个 Dataframe for 循环的条件创建一个新的 Dataframe

view - reshape View 的功能?

python - Julia 中类似 Numpy 的切片

julia - 如何在第一次调用 Julia 函数时执行一些代码?

python - 划分数据框列: TypeError: 'int' object is not iterable

python - 根据分隔符垂直拆分 DataFrame

python - 具有多索引的 pandas 数据框上的 boolean 掩码

r - 使用 dplyr 对多列求和时忽略 NA

python - 缓慢的 Julia 启动时间

julia - 在 iJulia 笔记本结果中提供文件下载链接