在去台北參加Open Data決賽的路上,看到了另外一場比賽衛生署辦的「健康存摺價值應用App競賽」,同樣也是利用OpenData來做應用,還蠻開心的,這下子找到了練習Swift的項目了~
比賽簡章上面有提到政府資料開放平台,其實已經有提供不少醫療方面的資料,不過我需要的資料很多都只有提供csv文件下載,沒有線上的API可以調用,而且很多文件看起來是故意去分散的,比如不同的病情統計資料,字段都一樣,卻按照病種的不同分成了多個文件=_=衝業績?
所以下載以後看到的是這樣的情況:
而且不知道是出於什麼考慮,很多文件裡面是沒有資料的….
空文件的檔案大小都一樣,所以這邊就手動直接刪除了。
接下來只需要寫一段Python code就可以瞬間合併出一個文件了。
1 2 3 4 5 6 7 8 9 |
from glob import glob with open('main.csv', 'a') as singleFile: for csv in glob('*.csv'): if csv == 'main.csv': pass else: for line in open(csv, 'r'): singleFile.write(line) |
將這一份merge.py文件放在那堆csv文件裡面,然後執行merge.py就會合併出一個main.csv文件了~
需要注意的是合併後要手動清除一下每個文件帶進去的字段,如果用excel來處理就很簡單了。
比如通過filter找到他們,然後刪除。
當然熟悉Python的朋友應該可以直接在code裡面解決,方向就是合併的時候無視第一行:D
我本身不熟悉Python,這段code來自StackOverFlow