Julia DataFrame无法新增filename变量问题求助
问题解决方法
报错原因
- 包导入错误:你使用的
using DataFrame写法有误,处理表格的官方包名是DataFrames,末尾少写了s - 核心逻辑错误:
CSV.File()返回的是专用的CSV迭代读取对象,不是可修改的DataFrame结构,无法直接用索引语法给它新增列
修正后可运行代码
using DataFrames using Queryverse using VegaLite using Statistics using CSV using Glob path = "D:\\Udemy\\FInancial_Engineering_Lazy_Programmer\\Yfinance_Data" files = glob("*.csv", path) df_com = DataFrame() for file in files # 读取CSV后先转为DataFrame结构 df = CSV.read(file, DataFrame) # 用内置函数提取无后缀文件名,兼容不同系统的路径分隔符 filename = splitext(basename(file))[1] df[!, :filename] .= filename append!(df_com, df) end
优化写法
如果所有CSV结构一致,可改用更高效的写法,避免循环append的性能损耗:
df_com = mapreduce(vcat, files) do file df = CSV.read(file, DataFrame) df.filename .= splitext(basename(file))[1] df end
内容的提问来源于stack exchange,提问作者Harneet.Lamba
相关产品推荐
相关产品推荐

