У меня есть данные в следующем формате:
+------+-------------+-----------------+--------------------+
|Serial| respID| VariableName| Response|
+------+-------------+-----------------+--------------------+
| 11|1_10001070394|Respondent.Serial| 11|
| 11|1_10001070394|Respondent.Origin|Interviewer Serve...|
| 11|1_10001070394| AGE| 48|
| 11|1_10001070394| SEX| Male|
| 11|1_10001070394| Eth1| No|
+------+-------------+-----------------+--------------------+
Мне нужно преобразовать его в следующий формат
+------+-------------+-----------------+--------------------+---------+---------+-------+
|Serial| respID|Respondent.Serial| Respondent.Origin| AGE| SEX| Eth1|
+------+-------------+-----------------+--------------------+---------+---------+-------+
| 11|1_10001070394| 11|Interviewer Serve...| 48| Male| No|
Я могу сделать это в Python для небольших наборов данных с помощью следующего кода -
df.groupby(['respID','Serial']).apply(lambda
x:x.pivot(columns='VariableName', values='Response')).reset_index().
groupby(['respID','Serial']).first()
но когда я пытаюсь использовать PySpark 2.4 (в DataBricks), создается впечатление, что объект GroupedData
не поддерживает извлечение 1-го значения Not Null.
Я пробовал следующее
df.groupBy(['respID','Serial']).pivot('VariableName',['Response'])
Создает объект GroupedData
, но не поддерживает преобразование в фрейм данных pyspark.