【问题标题】:How to merge two dataframes and eliminate dupes如何合并两个数据框并消除欺骗
【发布时间】:2020-11-19 21:24:12
【问题描述】:

我正在尝试将两个数据框合并在一起。一个有 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' 字段相同。

谢谢。

【问题讨论】:

    标签: python python-3.x dataframe merge


    【解决方案1】:

    在合并两者之前尝试remove the dups。会大大减少内存使用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-16
      • 2017-08-15
      • 2011-11-18
      • 1970-01-01
      • 2012-10-08
      相关资源
      最近更新 更多