在python中合并两个表与数百万行
|
我正在使用
python进行一些数据分析.我有两个表,第一个(称为’A’)有10万行和10列,第二个(‘B’)有7300万行和2列.它们具有1个带有公共ID的列,我想根据该列与两个表相交.特别是我想要表的内部连接.
解决方法这是一个小的伪杂交,但我认为应该是相当快.直接基于磁盘的合并,磁盘上的所有表.该 关键是你不是在选择本身,只是索引 通过启动/停止进入桌面,这是相当快的. 选择符合条件B(使用A的ids)的行将不会 另外如果你这么做,这是一个非常平行的问题(只是不要写 有关如何进行联接操作实际上是“内部”连接的注释,请参阅this answer. 对于您的merge_a_b操作,我想您可以使用标准的大熊猫连接 另一个选项(取决于“大”A)是否可能将A分为2部分 A = HDFStore('A.h5')
B = HDFStore('B.h5')
nrows_a = A.get_storer('df').nrows
nrows_b = B.get_storer('df').nrows
a_chunk_size = 1000000
b_chunk_size = 1000000
def merge_a_b(a,b):
# function that returns an operation on passed
# frames a and b
# could be a merge,join,concat,or other operation that
# results in a single frame
for a in xrange(int(nrows_a / a_chunk_size) + 1):
a_start_i = a * a_chunk_size
a_stop_i = min((a + 1) * a_chunk_size,nrows_a)
a = A.select('df',start = a_start_i,stop = a_stop_i)
for b in xrange(int(nrows_b / b_chunk_size) + 1):
b_start_i = b * b_chunk_size
b_stop_i = min((b + 1) * b_chunk_size,nrows_b)
b = B.select('df',start = b_start_i,stop = b_stop_i)
# this is your result store
m = merge_a_b(a,b)
if len(m):
store.append('df_result',m) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
