2016-08-10 4 views
0

Wie fügt man eine Spalte an den Datenrahmen an und fügt den Dateinamen in die Spalte ein? Ich konnte Header entfernen und konvertierte Datenrahmen den folgenden Code verwendet:DataFrame: Fügen Sie eine Spalte an den Datenrahmen an und fügen Sie den entsprechenden Dateinamen in diese Spalte ein

Ich habe 2 Dateien wie folgt:

file1.csv: 

name:file1 
dept: hr 
id,name,age 
1,ss,34 
2,rr,35 
3,aa,44 

file2.csv: 

name:file2 
dept: hr 
id,name,age 
1,ps,34 
2,er,35 
3,qa,44 
val ofcFile = sc.wholeTextFiles("file:///root/ofc/dataset").flatMap(_._2.split("\n").drop(3)) 
case class ofc_str(id : String, name: String, age : String) 
val DF = houseFile.map(_.split(",")).map(p => ofc_str(p(0).toString,p(1).toString,p(2).toString)).toDF() 
DF.show 
+--+----+---+ 
|id|name|age| 
+--+----+---+ 
|1 | ss | 34| 
|2 | rr | 35| 
|3 | aa | 44| 
|1 | ps | 34| 
|2 | er | 35| 
|3 | qa | 44| 

Aber ich bin nicht in der Lage, die Datensätze zu identifizieren, von denen Datei Ich habe es so, wie bekomme ich einen Dateinamen für jeden Datensatz und füge ihn in einen neuen Spaltennamen in DF ein.

+0

dies möglich ist ............. bitte, mich zu erreichen helfen! – Tangle

+0

Lassen Sie Dateinamen nicht fallen, wenn Sie flatMap? – zero323

+0

@ zero323 danke für die Antwort! ... Ich habe Dateinamen in der Datei ... so wie können wir diese Zeile in Datenrahmen als Daten in file_name Spalte ....... Statt Drop, wie kann ich es erreichen – Tangle

Antwort

0

Wie in den Kommentaren versuchen vorgeschlagen:

sc.wholeTextFiles("file:///root/ofc/dataset") 
    .flatMapValues(_.split("\n").drop(3)) 
    .mapValues(p => ofc_str(p(0).toString,p(1).toString,p(2).toString)) 
    .toDF() 
+0

@LostlnOverflow Danke für die Antwort .. einen Fehler bekommen ...-> 42: Fehler: Wert _2 ist kein Mitglied von String Bitte hilf mir, die Lösung zu finden. – Tangle

+0

Entschuldigung, korrigiert –

Verwandte Themen