2017-11-14 5 views
2

는 I는 DataFrame에이를 바꾸는 쉬운 방법이 있나요 그러므로 나는이줄리아에서 배열 배열을 DataFrame으로 변환하려면 어떻게해야합니까?

12-element Array{Array{Any,1},1}: 
Any[2015-09-01T00:00:00, 2016-09-01T00:00:00, 98, 53.1] 
Any[2015-10-01T00:00:00, 2016-10-01T00:00:00, 92, 58.7] 
Any[2015-11-01T00:00:00, 2016-11-01T00:00:00, 130, 64.6] 
Any[2015-12-01T00:00:00, 2016-12-01T00:00:00, 135, 67.4] 
Any[2016-01-01T00:00:00, 2017-01-01T00:00:00, 206, 59.2] 
Any[2016-02-01T00:00:00, 2017-02-01T00:00:00, 246, 54.1] 
Any[2016-03-01T00:00:00, 2017-03-01T00:00:00, 254, 53.9] 
Any[2016-04-01T00:00:00, 2017-04-01T00:00:00, 268, 65.7] 
Any[2016-05-01T00:00:00, 2017-05-01T00:00:00, 265, 61.5] 
Any[2016-06-01T00:00:00, 2017-06-01T00:00:00, 303, 52.8] 
Any[2016-07-01T00:00:00, 2017-07-01T00:00:00, 301, 59.1] 
Any[2016-08-01T00:00:00, 2017-08-01T00:00:00, 273, 54.6] 

처럼 AnyArray되는 행의 Array이 계산 값의 행에 결과 상위 map 전화를 가지고 열 이름 등등? 쉬운 방법이 없다면 더 열심히 할 수있는 방법이 있습니다. 다시 실행해야한다는 생각을 할 수 있습니다 map 열을 추출하고 그 중에서 DataFrame을 빌드하는 것이 네 번 있지만 이러한 겉보기에 평범한 작업은 ...

편집 나는 r 위 표이다이

map(x -> map(y -> y[x], r), collect(1:4) 

같은 컬럼에 행을 "트랜스", 그래서 나는 해결책이에 열 이름을 제공하는 것입니다 가정 DataFrame 생성자. 내 임시 방편 그러므로

DataFrame(map(x -> map(y -> y[x], r), collect(1:4)), [:a, :b, :c, :d]) 
+1

문제의 해결책 ('collect' 빼기)은 꽤 좋습니다. 제네릭 열 이름이 ok이면'DataFrame (hcat (r ...) ')'도 작동합니다 –

답변

1
julia> df 
12-element Array{Array{Any,1},1}: 
Any["2015-09-01T00:00:00", "2016-09-01T00:00:00", 98, 53.1] 
Any["2015-10-01T00:00:00", "2016-10-01T00:00:00", 92, 58.7] 
Any["2015-11-01T00:00:00", "2016-11-01T00:00:00", 130, 64.6] 
Any["2015-12-01T00:00:00", "2016-12-01T00:00:00", 135, 67.4] 
Any["2016-01-01T00:00:00", "2017-01-01T00:00:00", 206, 59.2] 
Any["2016-02-01T00:00:00", "2017-02-01T00:00:00", 246, 54.1] 
Any["2016-03-01T00:00:00", "2017-03-01T00:00:00", 254, 53.9] 
Any["2016-04-01T00:00:00", "2017-04-01T00:00:00", 268, 65.7] 
Any["2016-05-01T00:00:00", "2017-05-01T00:00:00", 265, 61.5] 
Any["2016-06-01T00:00:00", "2017-06-01T00:00:00", 303, 52.8] 
Any["2016-07-01T00:00:00", "2017-07-01T00:00:00", 301, 59.1] 
Any["2016-08-01T00:00:00", "2017-08-01T00:00:00", 273, 54.6] 

julia> DataFrame(permutedims(Array(DataFrame(map(data,df))), [2, 1])) 
12×4 DataFrames.DataFrame 
│ Row │ x1     │ x2     │ x3 │ x4 │ 
├─────┼───────────────────────┼───────────────────────┼─────┼──────┤ 
│ 1 │ "2015-09-01T00:00:00" │ "2016-09-01T00:00:00" │ 98 │ 53.1 │ 
│ 2 │ "2015-10-01T00:00:00" │ "2016-10-01T00:00:00" │ 92 │ 58.7 │ 
│ 3 │ "2015-11-01T00:00:00" │ "2016-11-01T00:00:00" │ 130 │ 64.6 │ 
│ 4 │ "2015-12-01T00:00:00" │ "2016-12-01T00:00:00" │ 135 │ 67.4 │ 
│ 5 │ "2016-01-01T00:00:00" │ "2017-01-01T00:00:00" │ 206 │ 59.2 │ 
│ 6 │ "2016-02-01T00:00:00" │ "2017-02-01T00:00:00" │ 246 │ 54.1 │ 
│ 7 │ "2016-03-01T00:00:00" │ "2017-03-01T00:00:00" │ 254 │ 53.9 │ 
│ 8 │ "2016-04-01T00:00:00" │ "2017-04-01T00:00:00" │ 268 │ 65.7 │ 
│ 9 │ "2016-05-01T00:00:00" │ "2017-05-01T00:00:00" │ 265 │ 61.5 │ 
│ 10 │ "2016-06-01T00:00:00" │ "2017-06-01T00:00:00" │ 303 │ 52.8 │ 
│ 11 │ "2016-07-01T00:00:00" │ "2017-07-01T00:00:00" │ 301 │ 59.1 │ 
│ 12 │ "2016-08-01T00:00:00" │ "2017-08-01T00:00:00" │ 273 │ 54.6 │ 

내가 솔루션이 훨씬 더 생각입니다 ...!