Сделать 3-ю строку заголовком Dataframe - PullRequest
0 голосов
/ 28 мая 2019

У меня есть данные в CSV, как показано ниже, первая строка пуста, а вторая строка заполнена только для 4 столбцов, как показано ниже,

        201901                201902           201903       201904
A   X   1           0       1       1
B   Y   0           0       1       1
A   Z   1           0       1       1
B   X   1           0       1       1
A   Y   0           0       0       1
B   Z   1           0       0       1
A   X   0           1       0       1
B   Y   1           1       0       0
A   Z   1           1       0       0
B   X   0           1       1       0

Если я прочту данные в csv, я получу данные, как показано ниже

_c1     _c2     _c3         _c4     _c5     _c6
null           null        null            null       null  null
null           null       201901                201902          201903  201904
A       X       1           0       1       1
B       Y       0           0       1       1
A       Z       1           0       1       1
B       X       1           0       1       1
A       Y       0           0       0       1
B       Z       1           0       0       1
A       X       0           1       0       1
B       Y       1           1       0       0
A       Z       1           1       0       0
B       X       0           1       1       0

Я прочитал файл данных без заголовка и удалил ненужные заголовки. Теперь я хочу преобразовать файлы в заголовок

df=spark.read.csv("s3://abc/def/file.csv",header=False)
df=df.where(col("_c3").isNotNull())
Type         Source         201901                 201902           201903  201904
A       X       1           0       1       1
B       Y       0           0       1       1
A       Z       1           0       1       1
B       X       1           0       1       1
A       Y       0           0       0       1
B       Z       1           0       0       1
A       X       0           1       0       1
B       Y       1           1       0       0
A       Z       1           1       0       0
B       X       0           1       1       0

1 Ответ

0 голосов
/ 29 мая 2019

вы можете создать собственную схему, определив ее примерно так

val customSchema = StructType(Array(
    StructField("yourcolumnheader", StringType, true),
    StructField("yourcolumnheader2", StringType, true),
    StructField("yourcolumnheader3", IntegerType, true),
    StructField("yourcolumnheader4", DoubleType, true)))

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

df=spark.read.csv("s3://abc/def/file.csv",header=False)
.schema(customeSchema)

надеюсь, что ответит на ваш вопрос.

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