4
私はcsvファイルからrddを作成しました。最初の行はそのcsvファイルのヘッダー行です。今はそのrddからデータフレームを作成し、rddの第1要素からの列を保持したいと思います。pysparkのRDD to DataFrame(rddの最初の要素の列)
問題:私はrdd.first()のデータフレームと列を作成できますが、作成されたデータフレームの最初の行はヘッダーそのものです。それを取り除くには?
lines = sc.textFile('/path/data.csv')
rdd = lines.map(lambda x: x.split('#####')) ###multiple char sep can be there #### or #@# , so can't directly read csv to a dataframe
#rdd: [[u'mailid', u'age', u'address'], [u'satya', u'23', u'Mumbai'], [u'abc', u'27', u'Goa']] ###first element is the header
df = rdd.toDF(rdd.first()) ###retaing te column from rdd.first()
df.show()
#mailid age address
mailid age address ####I don't want this as dataframe data
satya 23 Mumbai
abc 27 Goa
最初の要素がデータフレームデータに移動しないようにする方法。私はrdd.toDF(rdd.first())で任意のオプションを与えることができますか?
注:私はその後、その後、RDD再び形成し、その後toDF()に戻ってそのリストを並列化、そのリストから最初の項目を削除し、リストを形成するために、RDDを収集することはできません...
示唆してください!ありがとう
なぜDataFrameとして直接読み込まないのですか? – eliasah
@ eliasah- Sparkは(spark.read.csvまたはdatabricks csvパッケージで)データフレームを形成するために複数の文字区切り文字(####や#@#など)を持つファイルを読み取ることはできません。読み込むファイル。 – Satya
あなたのrddをDFに変換する前にヘッダーを削除してください。プラスあなたの質問で区切り記号はパイプです。だから、 "複数の文字区切り文字"の問題を推測しないだろう – eliasah