Разбор строки в Dataframe - PullRequest
       0

Разбор строки в Dataframe

0 голосов
/ 21 октября 2019

У меня есть следующие данные

100///t1001///t2///t0.119///t2342342342///tHi\nthere!///n103///t1002///t2///t0.119///t2342342342///tHello
there!
1010///t10077///t2///t0.119///t2342342342///tHi\nthere!///n1044///t1003///t2///t0.119///t2342342342///tHello there!

В файле у меня есть несколько строк вышеуказанных отформатированных данных. Каждая строка отделяется ///n и ///t. Для каждой строки есть четыре записи, которые разделены ///n. Внутри каждой записи есть четыре столбца, которые разделены ///t. Теперь мне нужно разобрать это в Dataframe. Так в основном для вышеупомянутых двух строк;так как каждая строка имеет 2 записи с 6 столбцами;в Dataframe должно быть 12 записей. Каждая запись имеет одинаковый формат.

Я попытался разобрать это, используя комбинацию split и amp, но не получил правильный вывод

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете обработать его, используя строковые преобразования, например:

// Sample of input data
val str1 = "100///t1001///t2///t0.119///t2342342342///tHi\nthere!///n103///t1002///t2///t0.119///t2342342342///tHello there!"
val str2 = "1010///t10077///t2///t0.119///t2342342342///tHi\nthere!///n1044///t1003///t2///t0.119///t2342342342///tHello there!"

val df = Seq(str1, str2).toDF

// Process:
    val output = df.as[String].flatMap(row=>{
  val fields = row.split("///n").map(record=>{
    val fields = record.split("///t").toList
    (fields(0), fields(1), fields(2), fields(3), fields(4), fields(5))
  }).toList
  fields
}).toDF("column_1", "column_2", "column_3", "column_4", "column_5", "column_6")

Результат:

+--------+--------+--------+--------+----------+------------+
|column_1|column_2|column_3|column_4|  column_5|    column_6|
+--------+--------+--------+--------+----------+------------+
|     100|    1001|       2|   0.119|2342342342|   Hi       |
|                                              |there!      |
|     103|    1002|       2|   0.119|2342342342|Hello there!|
|    1010|   10077|       2|   0.119|2342342342|   Hi       |
|                                              |      there!|
|    1044|    1003|       2|   0.119|2342342342|Hello there!|
+--------+--------+--------+--------+----------+------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...