"警告:在使用Julia中的DataFrames时,使用冒号作为行进行索引将在以后创建副本"

Jul*_*a O 0 dataframe julia

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

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]吗?每个都执行根本不同的操作???

Bog*_*ski 7

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

现在有什么区别:

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

该行为类似于写作xVS x[:]x在朱莉娅的向量.

为了完整的博览会,如果dfSubDataFrame那么:

  • df[col]将返回列的相应的视图colDataFramedf``df)
  • df[:, col]返回返回的视图的副本df[col](即法线向量 - 而不是视图)

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