首页 > 解决方案 > 如何合并两个数据框并消除欺骗

问题描述

我正在尝试将两个数据框合并在一起。一个有 150 万行,一个有 1500 万行。我期待合并的数据框有 15M 行,但它实际上有 178M 行!我认为我的合并是在做某种笛卡尔积,这不是我想要的。

这是我尝试过的,得到了​​ 178M 行。

df_merged = pd.merge(left=df_nat, right=df_stack, how='inner', left_on='eno', right_on='eno')

我尝试了下面的代码并得到了内存不足的错误。

df_merged = pd.merge(df_nat, df_stack, how='inner', on='eno')

我猜这些数据框中有骗子,这导致最终的合并工作失败了。我该怎么做才能得到一个包含 15M 行的最终合并数据框?最后,模式不同,只有“eno”字段相同。

谢谢。

标签: pythonpython-3.xdataframemerge

解决方案


在合并两者之前尝试删除重复。它将大大减少内存使用量:

df_1 = df_1.drop_duplicates(subset=['enodeb'], keep='last')
df_2 = df_2.drop_duplicates(subset=['enodeb'], keep='last')

如果数据集太小而无法放入内存,那么使用daskvaex进行核外处理可能是个好主意。


推荐阅读