根据内部字段过滤嵌套的 PySpark DataFrame
Filtering a nested PySpark DataFrame based on the internal fields
我有一个 DataFrame,其样本元素是(通过 take(1) 获得):
[Row(id=u'1', objects=Row('a'=Row(fav=True, ratio=0.5), 'b'=Row(fav=False, ratio=0.0))]
也就是说,结构是复合的,因此列 objects 是一个行数组(然后它们是复合的,并且它们包含两个字段)。
如何根据嵌套元素(即对象的内容)进行过滤?假设我要搜索 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|
+-----+
我有一个 DataFrame,其样本元素是(通过 take(1) 获得):
[Row(id=u'1', objects=Row('a'=Row(fav=True, ratio=0.5), 'b'=Row(fav=False, ratio=0.0))]
也就是说,结构是复合的,因此列 objects 是一个行数组(然后它们是复合的,并且它们包含两个字段)。
如何根据嵌套元素(即对象的内容)进行过滤?假设我要搜索 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|
+-----+