如何优化合并两大数据框架

2024-09-28 17:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,一个有超过60000000行,另一个有500000行。我想基于多索引合并这两个数据帧。我的IDE是jupyter,我的PC内存是16G,CPU是2.3GHz,64位。你知道吗

如何优化合并? 我有一些要求。我需要得到重叠的部分。 另外,我想知道是否有更深层次的方法来优化它,比如使用Cpython之类的?我不太清楚,因为我刚在这里读到enhancing performance

dfa类似于:

                    time                 brand
user_id  sku_id   
27630    37957  2016-02-01 07:43:14       8
489      37957  2016-02-01 07:43:04       8
489      37957  2016-02-01 07:43:02       8
661      21546  2016-02-01 07:43:02       6
……

df B类似于:

                   time                 brand
user_id  sku_id   
27630    37957  2016-02-01 07:43:14       8
489      37957  2016-02-01 07:43:04       8
764      37957  2016-02-01 07:43:02       8
667      2156   2016-02-01 07:43:02       3
……

Tags: 数据方法内存idtimejupytercpucpython
2条回答

在这种情况下,我会使用Index.intersection

解决方案:

In [159]: A.loc[A.index.intersection(B.index)]
Out[159]:
                               time  brand
user_id sku_id
489     37957   2016-02-01 07:43:04      8
        37957   2016-02-01 07:43:02      8
27630   37957   2016-02-01 07:43:14      8

Pandas documentation: Merge, join, and concatenate

你试过merge操作吗?你知道吗

df=df1.merge(df2,how='outer',on='your required column or index')

Parameters:

如何:{'left'、'right'、'outer'、'inner'},默认为'inner'

左:仅使用左框架中的键,类似于SQL左外部联接;保留键顺序

右:仅使用右帧中的键,类似于SQL右外部联接;保留键顺序

外部:使用来自两个帧的键的并集,类似于SQL完全外部连接;按字典顺序对键排序

内部:使用两个帧的键的交集,类似于SQL内部连接;保留左键的顺序

上:标签或列表:-字段名加入。必须在两个数据帧中找到。如果on为None且不在索引上合并,则默认情况下,它在列的交叉点上合并。你知道吗

相关问题 更多 >