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

在磚合並12 CSV文件。

AleksandraFrolo
新的貢獻者三世

大家好,

我在磚絕對新鮮,所以我需要你的幫助。

細節:

任務:合並12 CSV文件在磚的最佳方式。

位置的文件:我將詳細描述它,因為我可以沒有很好的定位。如果我去的數據- >瀏覽DBFS - >我可以找到文件夾12 csv文件。

我已經嚐試:

首先我必須說我已經到了正確的結果,但我認為這是非常糟糕的方法。

  • 創建火花對象。該對象將有助於從csv文件讀取數據。
火花= SparkSession.builder.getOrCreate ()

  • 保存csv讀入變量。
df_April = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_April_2019.csv”) df_August = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_August_2019.csv”) df_December = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_December_2019.csv”) df_February = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_February_2019.csv”) df_January = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_January_2019.csv”) df_July = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_July_2019.csv”) df_June = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_June_2019.csv”) df_March = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_March_2019.csv”) df_May = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /aleksandra.fr(電子郵件保護)/銷售分析/ Sales_May_2019.csv”) df_November = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_November_2019.csv”) df_October = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/銷售分析/ Sales_October_2019.csv”) df_September = spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore / aleksa(電子郵件保護)銷售分析/ Sales_September_2019.csv”)

  • 使用聯盟()方法將數據。數據structrure這個方法應該是一樣的。聯盟()方法返回一個包含所有項目從原來的集合,和所有物品從指定的組/ s。
df_AllMonth = df_April.union (df_August) .union (df_December) .union (df_February) .union (df_January) .union (df_July) .union (df_June) .union (df_March) .union (df_May) .union (df_November) .union (df_October) .union (df_September)

結論:

我想找到一個方法,我可以合並數據不保存到變量。是可能的嗎?也許你可以找到更好的方法怎麼做這個任務嗎?

謝謝你!

1接受解決方案

接受的解決方案

AleksandraFrolo
新的貢獻者三世

嗨,謝謝你的回答!是的我所有結構的csv文件都是相同的。

我用listdir()方法獲得所有文件的名字和“cykle”我閱讀路徑和csv文件,並將其保存到新的dataframe。

重要的是:實際上,如果我寫“dbfs: / ....”它不工作(我總是錯誤文件沒有找到),但當我使用“/ dbfs /“idk為什麼工作:sad_but_relieved_face:

無論如何,這是正確的代碼閱讀所有csv文件並連接它。

folder_path = " / dbfs / FileStore /(電子郵件保護)/銷售分析/“iles = os.listdir (folder_path) #返回定義的csv文件的名字列表文件夾df_all_months = pd.DataFrame() #為文件創建新的DataFrame對象文件:df_of_single_file = pd。read_csv (folder_path +文件)#存儲當前dataframe df_all_months = pd。concat ([df_all_months df_of_single_file])

在原帖子查看解決方案

5回複5

werners1
尊敬的貢獻者三世

好的一些技巧:

  • 你不需要創建一個火花會話數據磚,它已經由磚。但是你getOrCreate不會破壞任何東西

火花可以閱讀整個文件夾。如果你有12 csv文件在一個文件夾,和他們有同樣的模式,你可以試試:spark.read.format (csv)。選項(“分隔符”,”、“).option .load(“標題”、“true”) (“dbfs: / FileStore /(電子郵件保護)/分析/銷售)

這樣整個文件夾讀取。

當然,如果你的文件有不同的結構,火花顯然不知道做什麼所以你必須定義一個手動模式。

AleksandraFrolo
新的貢獻者三世

嗨,謝謝你的回答!是的我所有結構的csv文件都是相同的。

我用listdir()方法獲得所有文件的名字和“cykle”我閱讀路徑和csv文件,並將其保存到新的dataframe。

重要的是:實際上,如果我寫“dbfs: / ....”它不工作(我總是錯誤文件沒有找到),但當我使用“/ dbfs /“idk為什麼工作:sad_but_relieved_face:

無論如何,這是正確的代碼閱讀所有csv文件並連接它。

folder_path = " / dbfs / FileStore /(電子郵件保護)/銷售分析/“iles = os.listdir (folder_path) #返回定義的csv文件的名字列表文件夾df_all_months = pd.DataFrame() #為文件創建新的DataFrame對象文件:df_of_single_file = pd。read_csv (folder_path +文件)#存儲當前dataframe df_all_months = pd。concat ([df_all_months df_of_single_file])

werners1
尊敬的貢獻者三世

你好,

該解決方案將工作確實但是遠不夠理想。

你可以閱讀整個文件夾而不是使用一個循環。

dbfs的區別:/ / dbfs /隻是文件接口的類型。

使用/ dbfs /火花,這是它之所以在火花工作。

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

似乎所有的csv文件存在在一個文件夾,因為你可以聯盟,所有這些文件都必須有相同的模式。

鑒於上述條件,您可以簡單地讀取所有數據通過引用文件夾名稱,而不是指單獨每個文件。

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

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

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

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

Baidu
map