2017-09-21 1 views
2

미리 크기가이고 모든 행에 값을 할당하려고한다고 가정 해 보겠습니다.미리 할당 된 메모리가있는 데이터 프레임에 행 추가?

length = 10 
df = DataFrame(id = Array(Int64,length),value = Array(String,length)) 

for n in 1:10 
      df[n,:id] = n 
      df[n,:value] = "random text" 
end 

위의 코드는 각 반복 행에 대해 세포에 의해 해당 셀을 수행하는 방법을 보여줍니다 (Therfore 밀어!추가! 게임 중입니다).

각 행마다 한 번에 전체 행을 개 추가하는 해결책이 있습니까?

for n in 1:10 
      df[n] = [n "random text"] 
end 

은 잘못된 유형 예외를 throw합니다.

답변

1

행에 액세스하려면 구문이 아니라 단지 [row,:]입니다.

또한 먼저 행을 DataFrame으로 변환해야합니다.

for n in 1:10 
    df[n,:] = DataFrame([n "random text2"]) 
end 
+0

이 솔루션을 사용하는 경우 DataFrame의 열 순서에주의해야합니다. –

0

당신은 아주 쉽게 행 설정하기 위해 자신의 기능을 롤백 할 수 있습니다 : 이상적으로

julia> function setrow!(df, rowi, val)                          
      for j in eachindex(val) 
       df[rowi, j] = val[j] 
      end      
      df                              
     end       
setrow! (generic function with 1 method) 

julia> setrow!(df, 1, [1, "a"]) 
10×2 DataFrames.DataFrame 
│ Row │ id    │ value │ 
├─────┼─────────────────┼──────────┤ 
│ 1 │ 1    │ "a"  │ 
│ 2 │ 140525709817424 │ "#undef" │ 
│ 3 │ 140525709817488 │ "#undef" │ 
│ 4 │ 140525709817072 │ "#undef" │ 
│ 5 │ 140525709817104 │ "#undef" │ 
│ 6 │ 140525709817136 │ "#undef" │ 
│ 7 │ 140525709817168 │ "#undef" │ 
│ 8 │ 140525709817200 │ "#undef" │ 
│ 9 │ 140525709817232 │ "#undef" │ 
│ 10 │ 0    │ "#undef" │ 

을, 당신은 방송 할당 구문을 사용할 수 있습니다

df[2, :] .= [2, "b"] 

을하지만이 나타납니다 구현되지 않아야합니다 (아마도 좋은 이유가 있습니다. 확실하지 않습니다).

관련 문제