[問題] CSV資料可以依據column多筆配對嗎?

看板Python作者 (DK)時間1年前 (2022/07/27 17:07), 1年前編輯推噓5(508)
留言13則, 5人參與, 1年前最新討論串1/1
大家好,小弟想再次求救 我有個表格,如圖一 圖一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可以幫到我呢? 任何意見都歡迎大家提供給我參考,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.172.26 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1658912850.A.E15.html ※ 編輯: DKnex (36.226.172.26 臺灣), 07/27/2022 17:09:57

07/27 17:21, 1年前 , 1F
你沒解釋輸出要什麼啊 是同組的數值還是只要算個數
07/27 17:21, 1F
噢! 抱歉,是同組數值沒錯。 這筆資料要分類成不同組別 No.1&2H就是一個組別 輸出結果像圖二這樣就好。 ※ 編輯: DKnex (111.71.216.39 臺灣), 07/27/2022 17:36:11

07/27 18:48, 1年前 , 2F
謝謝ly大,我研究一下uuid

07/28 10:13, 1年前 , 3F
groupby ?
07/28 10:13, 3F
我試過groupby,但好像無法將2個欄位所有同時出現的值group在一起.... ※ 編輯: DKnex (118.169.3.177 臺灣), 07/28/2022 10:18:05

07/28 14:58, 1年前 , 4F
真滴有點難懂你的問題,不確定這樣對不對,先新增一
07/28 14:58, 4F

07/28 14:58, 1年前 , 5F
個空的column,然後df.groupby([‘count’,’url_hash
07/28 14:58, 5F

07/28 14:58, 1年前 , 6F
’,’keyword_id’])[‘新增的空欄位‘].sum()
07/28 14:58, 6F
我當初也有試過,但其實不單純要sum XD

07/28 19:11, 1年前 , 7F
所以您是要分別數keyword_id跟url_hash之後,再依url_hash
07/28 19:11, 7F

07/28 19:11, 1年前 , 8F
排列而已嗎
07/28 19:11, 8F
不止哦,是從url找到一群keyword後再從這群keyword找下一群url,重複找到沒有為止 抱歉,小弟形容得非常糟糕......

07/28 21:28, 1年前 , 9F
grouping,keyword url有相關就分成一組
07/28 21:28, 9F

07/28 21:29, 1年前 , 10F
uuid只是用來產生測試資料,靠union_find把資料配對
07/28 21:29, 10F
ly大是對的! 感謝您提供的程式碼讓我學習QQ 我後來只用你def後的code套進資料裡面就成功了!雖然和純手工excel資料上有一點差異 我沒用前面uuid是因為輸出的url那欄就算/t後,資料好像是uuid4隨機生成的代碼 跟原始資料不一樣,所以就跳過了。 ※ 編輯: DKnex (36.226.172.26 臺灣), 07/29/2022 09:57:43

07/29 14:11, 1年前 , 11F
uuid只是用來產生測試資料跟問題本身無關...
07/29 14:11, 11F
哈哈哈,對的!我後來有爬文看了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

07/29 16:02, 1年前 , 12F
不需要drop find+union已經把相關group都串成一起
07/29 16:02, 12F

07/29 20:51, 1年前 , 13F
我想讀成dict
07/29 20:51, 13F
文章代碼(AID): #1YuG1IuL (Python)