2016-04-11 11 views
1

I einen Datenrahmen, dessen Probenelementes aufweisen (mit einer Aufnahme (1) erhalten):einen verschachtelten PySpark Datenrahmen Filterung basierend auf den internen Feldern

[Row(id=u'1', objects=Row('a'=Row(fav=True, ratio=0.5), 'b'=Row(fav=False, ratio=0.0))] 

das heißt, ist die Struktur zusammengesetzter, so dass die Spalte Objekte ist ein Array von Zeilen (die dann zusammengesetzt sind und zwei Felder enthalten).

Wie würde ich basierend auf den verschachtelten Elementen filtern, nämlich auf den Inhalt von Objekten? Angenommen, ich möchte nach der Zeile suchen, deren ID '1' ist, was ist beispielsweise das Verhältnis zum Objekt 'b'?

Antwort

1

Versuchen Sie folgendes:

>>> 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| 
+-----+ 
Verwandte Themen