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