2017-02-01 5 views
1

У меня есть DataFrame с тремя столбцами; Как преобразовать его во вложенный массив в Scala - Array[Array[Double]]?Как мы можем создавать вложенные массивы в scala из dataframe?

Я получаю Array[(Double, Double)] когда я пытаюсь к карте:

val x= dataframe.select("time","sex") 
    .collect() 
    .map(x=>x(0).toString.toDouble ,x(1).toString.toDouble) 

ответ

1

Это потому, что ваша карта возвращается кортеж. так как вам нужен массив, вам нужно вернуть массив, как показано ниже.

val df = dataframe.collect().map(x => Array(x.getDouble(0), x.getDouble(1))) 

для доступа первого элемента (вложенный массив) в использовании результатов df.head или df(0)

EDIT:

иметь набор данных в столбчатой ​​моде Array [Array [Double]], где каждый столбец имеет свой собственный массив.

df.foldLeft((Array[Double](),Array[Double]())) { 
    case ((col1,col2),(x,y)) => (col1 :+ x) -> (col2 :+ y) 
} match { 
    case (arr1,arr2) => Array(arr1,arr2) 
} 
+0

Как мы можем получить доступ к первому массиву из него? – Deep

+0

@BejjamDEEPTHIPRIYA, пожалуйста, уточните свой запрос? –

+0

Из вышеприведенной команды мы получим массив [array [double]], как мы можем получить доступ к первому массиву ??? – Deep