作者DKnex (DK)
看板Python
标题[问题] CSV资料可以依据column多笔配对吗?
时间Wed Jul 27 17:07:27 2022
大家好,小弟想再次求救
我有个表格,如图一
图一
https://imgur.com/a/5r5SwNr
我根据K栏位count出重复值如L栏位
但这不完全是我要的结果
我要的结果如图二
图二
https://imgur.com/a/Bmw8f0o
我在Excel做的逻辑是:
1.首先从K栏位count出重复出现的url_hash,接着将重复的url_hash当中keyword_id
用vlookup去找重复出现的keyword_id
2.当找到这些重复keyword_id後,又将这些连带出现的url_hash
用vlookup再找重复的url_hash
3.重复上述1和2直到整个资料找完找不到为止,就形成图二这样的结果
目前因为资料很多,需要用python做完比较快
但小弟不知道从何下手,根据EXCEL用的函数也就countifs 还有 Vlookup
不知道在python是要用IF ELSE?
还是有其他可以funtion可以帮到我呢?
任何意见都欢迎大家提供给我参考,谢谢。
-------------------------------------------------------------------------
更新後续Code,目前已完成,感谢大家~
https://pastebin.com/j38vRBUs
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.172.26 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1658912850.A.E15.html
※ 编辑: DKnex (36.226.172.26 台湾), 07/27/2022 17:09:57
1F:推 lycantrope: 你没解释输出要什麽啊 是同组的数值还是只要算个数07/27 17:21
噢! 抱歉,是同组数值没错。
这笔资料要分类成不同组别
No.1&2H就是一个组别
输出结果像图二这样就好。
※ 编辑: DKnex (111.71.216.39 台湾), 07/27/2022 17:36:11
谢谢ly大,我研究一下uuid
3F:→ chang1248w: groupby ? 07/28 10:13
我试过groupby,但好像无法将2个栏位所有同时出现的值group在一起....
※ 编辑: DKnex (118.169.3.177 台湾), 07/28/2022 10:18:05
4F:推 heavyking02: 真滴有点难懂你的问题,不确定这样对不对,先新增一 07/28 14:58
5F:→ heavyking02: 个空的column,然後df.groupby([‘count’,’url_hash 07/28 14:58
6F:→ heavyking02: ’,’keyword_id’])[‘新增的空栏位‘].sum() 07/28 14:58
我当初也有试过,但其实不单纯要sum XD
7F:推 lambo: 所以您是要分别数keyword_id跟url_hash之後,再依url_hash 07/28 19:11
8F:→ lambo: 排列而已吗07/28 19:11
不止哦,是从url找到一群keyword後再从这群keyword找下一群url,重复找到没有为止
抱歉,小弟形容得非常糟糕......
9F:推 lycantrope: grouping,keyword url有相关就分成一组07/28 21:28
10F:→ lycantrope: uuid只是用来产生测试资料,靠union_find把资料配对07/28 21:29
ly大是对的! 感谢您提供的程式码让我学习QQ
我後来只用你def後的code套进资料里面就成功了!虽然和纯手工excel资料上有一点差异
我没用前面uuid是因为输出的url那栏就算/t後,资料好像是uuid4随机生成的代码
跟原始资料不一样,所以就跳过了。
※ 编辑: DKnex (36.226.172.26 台湾), 07/29/2022 09:57:43
11F:推 lycantrope: uuid只是用来产生测试资料跟问题本身无关...07/29 14:11
哈哈哈,对的!我後来有爬文看了uuid4的意思才慢慢了解
对了ly大,想再请教一下,因为我忘记说在手动excel做的时候,我会把group好第一
次的资料从原本的data整个剪下复制到新的表格储存。然後剩下的资料再group第二次
我逻辑上卡关的是,我知道excel整个手作流程,但看您的code发现很难def时候就
只做一次,我有试着用duplicated和drop去做,但都无法只做一次就清除...
这个task是不是真的很难QQ,还是有其他function可以一起运用呢?
※ 编辑: DKnex (118.169.3.177 台湾), 07/29/2022 14:25:44
目前我打算先了解find 和union 再试试完成第一次find後drop 然後重复改个回圈试试 不知道这个思路是否是对的?
※ 编辑: DKnex (111.71.216.20 台湾), 07/29/2022 14:30:44
12F:→ lycantrope: 不需要drop find+union已经把相关group都串成一起 07/29 16:02
13F:→ refusekkk: 我想读成dict 07/29 20:51
※ 编辑: DKnex (118.169.22.212 台湾), 08/03/2022 17:19:23