Почему следующая строка создает одномерный массив вместо 2-мерного? - PullRequest
1 голос
/ 23 марта 2019

Я пытаюсь прочитать файл CSV в Julia 1.1, производя матрицу строк с тем же форматом, что и исходные данные в файле CSV. Другими словами, если мой CSV-файл был

a,s,d,f,g,h
q,w,e,r,t,y

моя матрица должна выглядеть как

a s d f g h
q w e r t y

Я не знаю, сколько строк в файле, поэтому я попытался сделать следующее:

csv_file_lines = readlines("./" * filename)
data = hcat( map( x -> split(x, ","), csv_file_lines ) )

В одном из моих более коротких файлов примеров вывод

Array{SubString{String},1}[["date", "watch_time_minutes", "views", "average_view_duration", "video_thumbnail_impressions", "video_thumbnail_impressions_ctr"]; ["2019-03-04", "83.2051", "28", "2.9716", "318", "6.2893"]; ["2019-03-05", "43.6223", "12", "3.6352", "79", "10.1266"]; ["2019-03-06", "5.5267", "2", "2.7633", "33", "6.0606"]; ["2019-03-07", "0", "0", "0", "0", "0"]; ["2019-03-08", "58.7133", "11", "5.3376", "86", "8.1395"]; ["2019-03-09", "0", "0", "0", "0", "0"]; ["2019-03-10", "20.205", "4", "5.0512", "14", "7.1429"]; ["2019-03-11", "10.7013", "4", "2.6753", "24", "4.1667"]; ["2019-03-12", "1.3", "1", "1.3", "5", "20"]; ["2019-03-13", "0", "0", "0", "0", "0"]; ["2019-03-14", "14.7383", "6", "2.4564", "65", "9.2308"]; ["2019-03-15", "20.75", "7", "2.9643", "25", "12"]; ["2019-03-16", "31.0083", "4", "7.7521", "0", ""]; ["2019-03-17", "6.8624", "2", "3.4312", "0", ""]; ["2019-03-18", "0", "0", "0", "0", "0"]; ["2019-03-19", "0", "0", "0", "0", "0"]; ["2019-03-20", "0", "0", "0", "0", "0"]; ["2019-03-21", "0", "0", "0", "0", "0"]]

, который является одномерным массивом Substring массивов, вместо двумерного массива String с (или Substring с в данном случае). Что я здесь не так делаю? Изменение hcat на vcat ничего не решает.

Редактировать

Я бы предпочел сделать это без пакета CSV или фреймов данных, чтобы уменьшить накладные расходы.

1 Ответ

1 голос
/ 23 марта 2019

Я думаю, readdlm из стандартной библиотеки DelimitedFiles - это то, что вы ищете:

julia> using DelimitedFiles

julia> readdlm("file.csv", ',', String)
2×6 Array{String,2}:
 "a"  "s"  "d"  "f"  "g"  "h"
 "q"  "w"  "e"  "r"  "t"  "y"

Это создает 2x6 матрицу строк.

Проверка ?readdlmдля деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...