Я использую pyspark и у меня есть объект dataframe df
, и вот как выглядит вывод df.printSchema()
root
|-- M_MRN: string (nullable = true)
|-- measurements: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- Observation_ID: string (nullable = true)
| | |-- Observation_Name: string (nullable = true)
| | |-- Observation_Result: string (nullable = true)
Я хотел бы отфильтровать все массивы в «измерениях» где Observation_ID не является «5» или «10». Поэтому в настоящее время, когда я запускаю df.select('measurements').take(2)
, я получаю
[Row(measurements=[Row(Observation_ID='5', Observation_Name='ABC', Observation_Result='108/72'),
Row(Observation_ID='11', Observation_Name='ABC', Observation_Result='70'),
Row(Observation_ID='10', Observation_Name='ABC', Observation_Result='73.029'),
Row(Observation_ID='14', Observation_Name='XYZ', Observation_Result='23.1')]),
Row(measurements=[Row(Observation_ID='2', Observation_Name='ZZZ', Observation_Result='3/4'),
Row(Observation_ID='5', Observation_Name='ABC', Observation_Result='7')])]
Мне бы хотелось, чтобы после выполнения вышеупомянутой фильтрации и запуска df.select('measurements').take(2)
я получил
[Row(measurements=[Row(Observation_ID='5', Observation_Name='ABC', Observation_Result='108/72'),
Row(Observation_ID='10', Observation_Name='ABC', Observation_Result='73.029')]),
Row(measurements=[Row(Observation_ID='5', Observation_Name='ABC', Observation_Result='7')])]
Есть ли способ сделать это в pyspark? Спасибо в ожидании вашей помощи!