Julia-数据切片不适用于for循环,但不适用于for循环
我试图通过for循环从所有股票的数据中提取特定股票符号的数据。当我使用for循环外的代码时,代码正在工作,而相同的代码在for循环中不工作 下面是代码- 工作-Julia-数据切片不适用于for循环,但不适用于for循环,julia,julia-dataframe,Julia,Julia Dataframe,我试图通过for循环从所有股票的数据中提取特定股票符号的数据。当我使用for循环外的代码时,代码正在工作,而相同的代码在for循环中不工作 下面是代码- 工作- df = fh_5[fh_5.symbol .== "GOOG", ["date","close"]] 不起作用- for s in unique!(fh_5.symbol) df = fh_5[fh_5.symbol .== s, ["date"
df = fh_5[fh_5.symbol .== "GOOG", ["date","close"]]
不起作用-
for s in unique!(fh_5.symbol)
df = fh_5[fh_5.symbol .== s, ["date","close"]]
date_range = leftjoin(date_range, df, on =:"dates" => :"date")
end
错误
在我运行for循环之后,在for循环之外工作的代码不工作,我必须重新导入csv文件-如果我先运行它,for循环之外的代码工作。当我运行for循环时,我是否正在更改基本数据集fh_5
仅添加可复制的示例-
下面是使用的代码-
using DataFrames
using DataFramesMeta
using CSV
using Dates
using Query
fh_5 = CSV.read("D:\\Julia_Dataframe\\JuliaCon2020-DataFrames-Tutorial\\fh_5yrs.csv", DataFrame)
min_date = minimum(fh_5[:, "date"])
max_date = maximum(fh_5[:, "date"])
date_seq = string.(collect(Dates.Date(min_date) : Dates.Day(1) : Dates.Date(max_date)))
date_range = df = DataFrame(dates = date_seq)
date_range.dates = Date.(date_range.dates, "yyyy-mm-dd")
for s in unique(fh_5.symbol)
df = fh_5[fh_5.symbol .== s, ["date","close"]]
date_range = leftjoin(date_range, df, on =:"dates" => :"date")
rename!(date_range, Dict(:close => s))
end
不要使用
unique因为这会使fh_5.symbol
列发生变异。换句话说,独一无二代码>删除该列中的重复值,这将更改该列的长度。改用unique
。比如说:
for s in unique(fh_5.symbol)
df = fh_5[fh_5.symbol .== s, ["date","close"]]
date_range = leftjoin(date_range, df, on =:"dates" => :"date")
end
在Julia中,按照惯例,函数的名称以结尾代码>将改变(一些)它们的参数。即使我在for循环中添加了“AAPL”、“GOOG”等特定符号,并且没有使用动态变量,只是为了测试for循环中的变量是否存在任何问题,我仍然会得到相同的错误,请,添加一个。我已经添加了一个可复制的示例,但是在加入@Cameron Bieganek的建议后,代码现在运行良好-我之前将“unique”从“unique!”更改为“unique!”
for s in unique(fh_5.symbol)
df = fh_5[fh_5.symbol .== s, ["date","close"]]
date_range = leftjoin(date_range, df, on =:"dates" => :"date")
end