[問題] CSV資料可以依據column多筆配對嗎?
大家好,小弟想再次求救
我有個表格,如圖一
圖一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
07/27 18:48, 2F
謝謝ly大,我研究一下uuid
→
07/28 10:13,
1年前
, 3F
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
07/28 14:58, 5F
→
07/28 14:58,
1年前
, 6F
07/28 14:58, 6F
我當初也有試過,但其實不單純要sum XD
推
07/28 19:11,
1年前
, 7F
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
07/28 21:28, 9F
→
07/28 21:29,
1年前
, 10F
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
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
07/29 16:02, 12F
→
07/29 20:51,
1年前
, 13F
07/29 20:51, 13F