您可以包括一個示例的CSV CSV格式的附件就容易了。
也許這足以增加空間分隔符.option(“分隔符”、“‡”)。
另一個選擇是使用外部應用程序從CSV清洗識字課。
我們也可以整個線加載到dataframe和把它使用火花SQL字符串函數https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/functions.html字符串函數…
嗨@shamly pt
我花了另一種方法因為我猜沒有人會肯定你顯示的編碼數據。
我把樣本數據:
‡‡companyId‡‡,‡‡empId‡‡,‡‡regionId‡‡,‡‡companyVersion‡‡,‡‡問題‡‡
‡‡1‡‡,‡‡121212‡‡,‡‡R‡‡,‡‡1.0‡‡,‡‡NA‡‡
我的方法:
首先閱讀數據”、“關閉頁眉和9月。重命名_c0 col1視覺目的。然後創建了一個列分割,分離和正則表達式替換數據的值。最後過濾掉的行包含頭dataframe我已經別名。
dff = spark.read。選項(“頭”,“假”)。選項(“inferSchema”,“真正的”).option (“9”, ", ") . csv (“/ FileStore /表/ Book1.csv”)。withColumnRenamed (“_c0”、“col1”) split_col = pyspark.sql.functions。split (dff [' col1 '], ', ') df2 = dff.select (regexp_replace (split_col.getItem (0)”[^ 0-9a-zA-Z_ \ -] + ", " ") .alias (“companyId”)的\ regexp_replace (split_col.getItem (1),“[^ 0-9a-zA-Z_ \ -] + ", " ") .alias (“empId ')的\ regexp_replace (split_col.getItem (2),“[^ 0-9a-zA-Z_ \ -] + ", " ") .alias (“regionId”)的\ regexp_replace (split_col.getItem (3),“[^ 0-9a-zA-Z_ \ -] + ", " ") .alias (“companyVersion”)的\ regexp_replace (split_col.getItem (4),“[^ 0-9a-zA-Z_ \ -] + ", " ") .alias(的問題))\輸出= df2.where (df2.companyId ! =“companyId”)
我的輸出:
希望這有助於…幹杯…
親愛的@Uma Maheswara Rao Desula謝謝你的幫助。我能分裂成列。我有近90列。那麼,有什麼方法我可以自動化嗎?
我試著下麵的代碼,但它不是給清潔分離列你的代碼。
dff = spark.read。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“分隔符”、“‡‡,‡‡”). csv (filepath)
dffs_headers = dff.dtypes
因為我在dffs_headers:
columnLabel =我[0]
newColumnLabel = columnLabel.replace (“‡‡’,”) .replace (“‡‡“,”)
dff = dff。的withColumn (newColumnLabel regexp_replace (columnLabel, ' ^ \ \‡‡| \ \‡‡美元“,”)
如果columnLabel ! = newColumnLabel:
dff = dff.drop (columnLabel)