熊猫大加入和反加入

问题描述 投票:0回答:0

我必须先执行一次大连接,然后再执行一次反连接 pandas。 操作如下:

#Network database:
#Niusup Niucust
#1        a
#1        b 
#1        c
#2        d
#2        e

#result after desired join operation:

#Niusup Niucust_x Niucust_y
#1        a       a
#1        a       b
#1        a       c
#1        b       a 
#1        b       b
#1        b       c
#1        c       a 
#1        c       b
#1        c       c
#2        d       d 
#2        d       e
#2        e       d
#2        e       e

问题是我必须加入的真实网络数据库有 500 万个观察结果(我猜)变成几乎(5000000!/2)个观察结果,导致内存错误。然后,生成的数据库应该用于与另一个称为 DB 的巨大数据集执行反连接。 我的想法是创建网络数据库的块(也许是 NiuSup?),根据需要创建连接,然后为该卡盘保存 anti_join,从而取消来自 DB 的一些观察(因此它本身应该占用更少的内存)。取消块并重复下一个块,依此类推。我对这类操作很陌生。所以我有以下问题:

  1. 有办法吗?你能提供一个MWE吗?
  2. 你认为内存是通过上述方法解决的吗?
  3. 如果 1. 和 2. 没问题,有没有办法加快进程(例如并行化/dask...)

提前非常感谢

python pandas merge inner-join
© www.soinside.com 2019 - 2024. All rights reserved.