在Julia中使用DataFrames时,“警告:将冒号作为行进行索引将在将来创建一个副本”

时间:2019-02-10 12:55:02

标签: dataframe julia

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

  

julia> datecol = df [:,:time]
  ┌警告:使用冒号作为行索引将在将来创建一个副本。使用df[col_inds]获取列而不进行复制
  │调用者=顶级作用域,无:0
  Core @核心无:0
  5000个元素
  数组{String,1}:
   “ 2002-11-27T22:00:00.000000Z”
   “ 2002-11-28T22:00:00.000000Z”
  。
  。
  。

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

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

1 个答案:

答案 0 :(得分:7)

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

现在有什么区别:

  • NSPredicate返回df[col] col中存储在其中的列DataFrame(不执行复制-您可以访问存储在{{ 1}})
  • df返回df中列df[:, col]的副本

col是Julia中的向量时,行为类似于写DataFrame vs x

如果博览会的完整性,如果x[:]x,则:

  • df返回SubDataFrame的父df[col]col列的适当视图
  • DataFrame返回由df``df返回的视图的副本(即法向矢量-不是视图)

简而言之-如果要使df[:, col]的变化值传播回df[col],请使用x = df[col];如果要一个新分配的对象(其更改不会将其更改),请使用x传播回df