当我尝试从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]
之间的区别吗?每个操作都执行根本不同的操作吗?
答案 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
。