Pyspark.sql.dataframe преобразует данные массива каждого столбца конкретной строки в новый фрейм данных с данными массива в виде отдельных строк
Тип моего фрейма данных:
type(df)
: pyspark.sql.dataframe.DataFrame
Имеет 3 столбца и 40 строк.
Тип данных столбцов:
df.dtypes
:
[('Col1',
'struct<A:string,B:string,C:string,D:string,E:string>'),
('Col2', 'string'),
('Col3', 'array<struct<timestamp:bigint,value:double>>')]
Точки импа:
- Меня интересует только Кол3 каждой строки.
- Всего 40 строк.
- Каждый столбец Col3 строки представляет собой массив struct. Этот размер массива для каждой строки превышает 20 000.
Вопрос:
Я хочу преобразовать 3-й столбец каждой строки в новый кадр данных, которыйбудет иметь 20 000 или более или менее строк в зависимости от размера массива 3-го столбца для этой конкретной строки.
Новый фрейм данных для каждой строки будет иметь метку времени и значение из двух столбцов.
Проблемы
Я не знаю, как выбрать каждую строку, используя индекс. Если я сделаю это, то смогу применить функцию explode()
, и тогда у меня будет дата-фрейм с двумя столбцами timestamp и значением.
Поскольку я не знаю, «как извлечь каждую строку, используяindex ", поэтому я применил explode()
непосредственно к последнему столбцу, какой вид сделал мою работу, но проблема в том, что я потеряю информацию о том, какой индекс в разнесенном фрейме данных заканчивается в конце 1-й строки, в начале 2-й строки и т. д. и т. д.
Пожалуйста, помогите. Как правильно достичь результата.