so wählen Sie alle Spalten, die beginnt mit einem gemeinsamen Etikett
Ich habe einen dataframe in Spark 1.6 und möchten Sie nur einige Spalten aus ihm heraus. Sind die Spaltennamen wie:
colA, colB, colC, colD, colE, colF-0, colF-1, colF-2
Ich weiß, dass ich tun kann, wie das auswählen bestimmter Spalten:
df.select("colA", "colB", "colE")
aber, wie zu wählen, sagen Sie "colA", "colB" und alle die colF-* Spalten auf einmal? Gibt es eine Möglichkeit wie in Pandas?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst nehmen Sie die Spalte-Namen mit
df.columns
, dann filter nach unten, um nur die Spalte Namen, die Sie möchten.filter(_.startsWith("colF"))
. Diese gibt ein array aus Strings. Aber das auswählen dauertselect(String, String*)
. Zum Glück wählen Sie für die Spalten istselect(Column*)
, so dass schließlich konvertieren der Strings in Spalten mit.map(df(_))
, und schließlich drehen Sie das Array von Spalten in einer var arg mit: _*
.Dieser filter könnte noch komplexer (wie Pandas). Es ist jedoch eine ziemlich hässliche Lösung (IMO):
Wenn die Liste der anderen Spalten behoben wird, könnte man auch Zusammenführen eines festen Arrays von Spalten Namen mit gefilterten array.