取消
顯示的結果
而不是尋找
你的意思是:

需要刪除doubledagger分隔符使用磚從csv

虛假的
新的貢獻者三世

我的csv數據看起來是這樣的

‡‡companyId‡‡,‡‡empId‡‡,‡‡regionId‡‡,‡‡companyVersion‡‡,‡‡問題‡‡

我試著這段代碼

dff = spark.read。選項(“頭”,“真正的”)。選項(“inferSchema”,“真正的”)。選項(“分隔符”、“‡”). csv (f“/ mnt /數據/路徑/ datafile.csv”)

但我得到空間在每個字符之間的結果

��!!c o m p n y我d !!,!!e m p I d !!,!! r e g i o n I d ! ! , ! !

請幫助

1接受解決方案

接受的解決方案

UmaMahesh1
尊敬的貢獻者三世

嗨@shamly pt

這是一個縮進的錯誤。檢查後如果你有適當的縮進。

我猜你的錯誤如果columnLabel ! = newColumnLabel:

dff = dff.drop (columnLabel)。

剛才打了一個選項卡或給縮進空間之前dff = dff.drop (columnLabel)

歡呼聲……

在原帖子查看解決方案

9回複9

Hubert_Dudek1
尊敬的貢獻者三世

您可以包括一個示例的CSV CSV格式的附件就容易了。

也許這足以增加空間分隔符.option(“分隔符”、“‡”)。

另一個選擇是使用外部應用程序從CSV清洗識字課。

我們也可以整個線加載到dataframe和把它使用火花SQL字符串函數https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/functions.html字符串函數…

UmaMahesh1
尊敬的貢獻者三世

嗨@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)

UmaMahesh1
尊敬的貢獻者三世

嗨@shamly pt

我可以知道是什麼數據不匹配問題你麵對使用前麵的代碼?

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map