我知道之前在这里提过类似的问题 ,但那是关于行过滤的。这次我想删除列而不是行。我试图实现Higher Order Functions(高阶函数)如 FILTER
和其他一些时间,但无法让它们起作用。我认为我需要一个 SELECT
Higher Order Function,但它似乎不存在。感谢您的帮助!
我正在使用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)
我希望只保留'measurements'中的'Observation_ID'或'Observation_Result'列。 当我运行 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_Result='108/72'),
Row(Observation_ID='11', Observation_Result='70'),
Row(Observation_ID='10', Observation_Result='73.029'),
Row(Observation_ID='14', Observation_Result='23.1')]),
Row(measurements=[Row(Observation_ID='2', Observation_Result='3/4'),
Row(Observation_ID='5', Observation_Result='7')])]
有没有在pyspark中实现这个的方法?感谢您的帮助!