在 Julia 中使用数据帧"Warning: Indexing with colon as row will create a copy in the future"



当我尝试从 Julia 中的数据帧中提取列时,出现以下错误:

Julia> datecol = df[:, :time]
┌ 警告:将冒号作为行进行索引将在将来创建副本。使用 df[col_inds] 获取列而不复制
│ 调用方 = 无时的顶级作用域:0
└ @ 核心无:0
5000 元素
数组{字符串,1}:
"2002-11-27T22:00:00.000000Z">
"2002-11-28T22:00:00.000000Z">
.
.
.

但是,当我执行df[:time]时,不会产生任何警告。

有人可以阐明df[:, :time]df[:time]之间的区别吗?每个操作是否执行根本不同的操作???

请将 DataFrames.jl 更新到当前版本,您将不会收到此警告。

现在有什么区别:

  • df[col] 返回DataFrame df中存储的列col(不执行复制 - 您可以访问存储在 df 中的向量(
  • df[:, col]返回列的副本col DataFrame

x 是 Julia 中的向量时,该行为类似于编写 x vs x[:]

为了说明的完整性,如果df是一个SubDataFrame,那么:

  • df[col] 返回列的相应视图 coldf``df ( 的父DataFrame(
  • df[:, col] 返回由 df[col] 返回的视图的副本(即法线向量 - 不是视图(

简而言之 - 如果您希望更改的 x 值传播回df,请使用 x = df[col],如果您想要一个新分配的对象,其更改不会传播回 df 请使用 x = df[:, col]

相关内容

最新更新