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