我有一个DataFrame,它的样本元素是(用take(1)获得):
[Row(id=u'1', objects=Row('a'=Row(fav=True, ratio=0.5), 'b'=Row(fav=False, ratio=0.0))]
也就是说,该结构是复合的,因此列objects是一个Rows数组(然后它们是复合的并且包含两个字段)。
我将如何根据嵌套的元素进行筛选,即根据对象的内容进行筛选?假设我想搜索id为"1"的行,例如,这是名为"b"的对象的比率?
试试这个:
>>> df = sc.parallelize([Row(id=u'1', objects=Row(a=Row(fav=True, ratio=0.5), b=Row(fav=False, ratio=0.0)))]).toDF()
>>> df.where("id = 1").select("objects.a.ratio").show()
+-----+
|ratio|
+-----+
| 0.5|
+-----+