作者leog123456 (N/A)
看板Python
標題[問題] 在不同csv檔管理重複資料的方法
時間Sat Jun 18 08:31:05 2022
Hi 大家好 想問一個觀念題
我有一個其他程式每天會固定輸出一個固定格式的csv到固定的資料夾
我目前已經實現用dataframe把當日新的csv內重複的資料刪除並保留最新的 並將每天處
理過的csv
另存到其他資料夾並自動上傳到雲端
ex:
人名,穿著,時間
小明,黃色衣服,17:50 6/18
小明,紅色衣服,18:50 6/18
根據同樣的人名小明 只保留最新時間的資料的小明紅色衣服資料 刪除舊的小明黃色衣服
的資料
但我現在遇到的問題是如果有跨csv的重複人名資料 ex小明可能會出現在前天6/16的跟今
天6/18的csv 我要刪除舊的重複資料就會有難度 請問有沒有比較好的方法來去做管理?
for loop把所有csv read到同一個df感覺沒有有點不切實際?因為我有非常多csv檔
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.236.153 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1655512267.A.127.html
※ 編輯: leog123456 (111.243.105.216 臺灣), 06/18/2022 08:37:29
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 08:39:38
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 08:40:15
2F:→ celestialgod: 最好的方式是用資料庫存資料06/18 08:41
謝謝 目前已經是用類似的方式處理單筆csv內的重複資料 但是我的問題是跨不同csv的重
複資料
3F:推 lycantrope: df.groupby("人名").sort_values(by="時間").last(1)06/18 09:33
4F:→ lycantrope: 記錯groupby沒有sort_values06/18 09:38
5F:推 lycantrope: sort跟groupby對調就可以了06/18 09:40
謝謝 已經會處理單個csv的 想要討論如果我有非常多csv有什麼好辦法嗎?全部import
到一個df的話我還有辦法照原本csv output 出來嗎?ex. 10個進去 10個出來 這樣
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 10:23:12
6F:推 lycantrope: 是不同csv file整理一起同步更新嗎?06/18 11:16
7F:→ lycantrope: concat前把個別df加上filename,concat處理後,可以06/18 11:18
8F:→ lycantrope: 再個別輸出csv也是一種方法 06/18 11:19
好的 來試試看 謝謝!
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 12:14:31
9F:推 celestialgod: 建議直接把csv全部存進去sqlite 處理06/18 16:13
10F:→ celestialgod: 就好 這樣比較簡單06/18 16:13
謝謝!會研究看看
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 16:25:40
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/18/2022 16:26:54
11F:→ longlongint: 建索引啊 key 出現在哪些檔案06/19 03:07
12F:→ longlongint: 然後你會發現「存多個csv」這個性質你要思考一下 06/19 03:08
13F:→ longlongint: 建議資料庫啦 但你又下了一個有矛盾的強大限制06/19 03:10
謝謝 的確有一點麻煩 每天都會有一個csv產出 然後我有程式每天自動去修改當日(datet
ime==today)產出的csv
然後上傳到server再做圖 但難處就在今天新建的csv內有跟先前上傳過的csv內有重複的
資料(小明) 所以造成那麼矛盾的問題 不好意思
※ 編輯: leog123456 (220.135.236.153 臺灣), 06/19/2022 23:31:43
※ 編輯: leog123456 (111.243.141.44 臺灣), 06/19/2022 23:34:58
14F:推 bills1987: DB建Pk by 日期&其他欄位 06/20 11:04