作者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/cn.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