如何改变DataFrame?

Eco*_*ium 5 dataframe julia

我试图从我的数据框中删除一些列,并且不希望返回修改后的数据框并将其重新分配给旧的.相反,我希望该功能只是修改数据框.这就是我尝试的但它似乎没有做我除外.我的印象参数是作为参考传递而不是价值?

function remove_cols! (df::DataFrame, cols)   
  df = df[setdiff(names(df), cols)];
end

df = DataFrame(x = [1:10], y = [11:20]);
remove_cols!(df, [:y]); # this does not modify the original data frame
Run Code Online (Sandbox Code Playgroud)

当然下面的工作,但我更愿意,如果remove_cols!只是改变了df到位

df = remove_cols!(df, [:y]);
Run Code Online (Sandbox Code Playgroud)

如何在我的功能中更改df?

谢谢!

Mr *_*pha 5

据我所知,朱莉娅使用所谓的共享传递,这意味着引用是通过值传递的.因此,当您将DataFrame传递给函数时,会创建一个对函数本地的DataFrame的新引用.当您df使用自己对DataFrame的引用重新分配局部变量时,它对单独的全局变量及其对DataFrame的单独引用没有影响.

DataFrames.jl中有一个用于删除DataFrames中的列的函数.