作者ruisme (RU)
看板Python
標題[問題] DataFrame資料篩選問題
時間Mon May 15 22:29:48 2017
各位前輩大家好,小弟想詢問有關pandas中dataframe問題
問題描述:
有兩個table我稱它為A與B,裡面的欄位都一樣,第一欄是ID
(同一個table中ID有可能重複所以我沒有把ID設為index)
我要做一個新的table(下稱C),以A為基礎,將B表格中ID也出現在A的資料加到C中
我的解法是用for迴圈,具體程式碼如下:
http://tinyurl.com/m37co8j
問題就出在這個for,若是AB兩個table的資料都各有數十萬筆,光跑這個for迴圈
就很花時間了,更別提後續的分析
請問有沒有不用for迴圈的解法?
題外話:
小弟今天要處理的資料集有可能是接近千萬筆,請問有沒有比pandas更快的分析工具?
先謝謝各位了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.64.193
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1494858591.A.F33.html
1F:推 Metal5566: pd.merge(A_Table, B_Table, on='ID', how='left') 05/15 23:37
2F:推 Metal5566: 然後再用dropna() 05/15 23:39
我照您的方法試,多了一欄,最後的結果也跟我打的小程式不太一樣,
不知道是不是我的說明不夠清楚? 我等等來加個註解還有最後結果
還是謝謝你啦
※ 編輯: ruisme (140.113.64.193), 05/15/2017 23:55:52
※ 編輯: ruisme (140.113.64.193), 05/16/2017 00:05:57
※ 編輯: ruisme (140.113.64.193), 05/16/2017 00:06:56
3F:推 HenryLiKing: 很大資料要不要用hadoop啊(我不確定我說的對不對欸 05/16 00:49
4F:→ HenryLiKing: 因為我沒學過QAQ 05/16 00:49
我找到方法了
C_table = A_table.append(B_table[B_table['ID'].isin(A_table['ID'])])
這樣就解決了
※ 編輯: ruisme (140.113.100.202), 05/16/2017 09:35:47