Julia技术问询:获取指定目录文件列表及合并CSV为DataFrame
Julia 相关技术问题解答
1. 获取指定路径文件夹的文件列表
在Julia中可以用readdir()函数直接获取指定路径下的所有文件/文件夹名称,针对D:\working路径,写法如下:
# 方法1:用双反斜杠转义路径 file_list = readdir("D:\\working") # 方法2:用原始字符串,无需转义,更简洁 file_list = readdir(raw"D:\working")
执行后file_list会返回该文件夹下的文件名数组,对应你提到的["result_1.csv", "result_2.csv", "result_3.csv", "result_4.csv"]。
如果只想筛选CSV文件,可添加过滤条件:
csv_files = filter(f -> endswith(f, ".csv"), readdir(raw"D:\working"))
2. 合并多个CSV文件为单个DataFrame
你提供的代码存在问题:CSV.File.(...)返回的是Vector{CSV.File}类型,无法直接通过|> DataFrame转换为单一DataFrame。正确流程是先把每个CSV.File转为DataFrame,再用vcat()合并。
示例代码:
using CSV using DataFrames # 切换到目标工作目录 cd(raw"D:\working\logistics\logistics_bill\V5") # 指定要合并的文件(也可以用readdir动态获取) files = ["result_1月.csv", "result_2月.csv"] # 步骤1:读取每个文件为DataFrame,得到DataFrame数组 df_array = DataFrame.(CSV.File.(files)) # 步骤2:合并所有DataFrame total = vcat(df_array...) # 也可以写成一行简化版 total = CSV.File.(files) .|> DataFrame |> x -> vcat(x...)
如果所有CSV文件列结构一致,vcat()会自动按列名对齐合并;若列结构有差异,可通过vcat(df_array..., cols=:union)保留所有列,缺失值用missing填充。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

