Ich versuche, eine Liste von Zeichenfolgen aus dem Header einer CSV-Datei in pyspark zu bilden. Der Header in der CSV-Datei ist im Unicode-Format. Ich schrieb diesen Code, der den Header liest, aber es nicht mit einzelnen Werten aus dem Header der Liste bildet:bilden eine Liste von Zeichenfolgen aus dem Header einer CSV-Datei in pyspark
def filter(line):
return line
read_file = sc.textFile('file:///file1.csv').zipWithIndex().filter(lambda (line, rownum): rownum == 0).map(lambda (line, rownum): line)
data = (read_file
.map(lambda line: line.split(","))
.filter(lambda line: len(line) >= 1)
.map(filter))
print data.collect()
Der Ausgang Ich sehe wie folgt aussieht:
[[u'header1', u'header2', u'header3', u'header4', u'header5']]
während ich möchte es sei ['header1','header2','header3','header4','header5']
Wie kann ich es korrigieren und die Liste bilden?
Fügen Sie einfach ein '[0]' ganz am Ende Ihres Codes hinzu. Mach dir keine Sorgen um das "Du", es ist harmlos. Es bedeutet, dass es ein Unicode-Objekt und keine einfache Zeichenfolge ist, was eigentlich eine gute Sache ist. Wenn Sie 'header in data.collect(): print header' versuchen, sehen Sie nur die Header :-) –
@AlexHall Wo soll ich '[0]' einfügen? – user2966197
Was Sie sehen, ist eine Liste mit einem Element: eine Liste. Sie können dieses eine Element mit '[0]' extrahieren, zB 'print data.collect() [0]' oder 'für den Header in data.collect() [0]: print header' (Ich habe es im obigen Kommentar vergessen). –