You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas Merge():含NaN值数据集合并的更优方案咨询

Pandas合并含NaN数据集:先删后合VS先合后删

针对你问的这两种方案,没有绝对的优劣,核心得看你的数据保留需求和NaN的分布情况,下面分场景拆解:

方案1:先删各数据集的NaN再合并

  • 适合场景:
    • 你只需要两个数据集中完全无缺失的样本参与合并,比如模型对缺失值零容忍,且用来合并的键列(比如on指定的列)没有NaN
    • 数据集规模很大,提前删掉含NaN的行能减少合并时的计算量
  • 操作代码示例:
    import pandas as pd
    
    # 先清理单个数据集的所有NaN行
    df1_clean = df1.dropna()
    df2_clean = df2.dropna()
    # 执行合并
    merged_result = pd.merge(df1_clean, df2_clean, on='合并键列名')
    
  • 注意点:如果合并键列本身有NaN,提前删除会直接丢掉这些样本,可能导致合并后样本量骤降,不符合需求的话别用。

方案2:先合并再删除合并后的NaN

  • 适合场景:
    • 想保留尽可能多的样本,只删除合并后**关键列(比如特征、标签列)**有缺失的行
    • NaN只出现在其中一个数据集的非关键列,合并后能保留其他有效数据
    • 需要先查看合并后整体的缺失情况,再做更灵活的处理(比如给部分列补值,而非全删)
  • 操作代码示例:
    import pandas as pd
    
    # 先执行合并(这里用outer join保留所有样本,你也可以根据需求换inner/left/right)
    merged_df = pd.merge(df1, df2, on='合并键列名', how='outer')
    # 只删除关键列含NaN的行,而非全删
    cleaned_result = merged_df.dropna(subset=['特征列1', '标签列'])
    
  • 注意点:如果两个数据集都有大量NaN,先合并再删可能会产生不少无效行,但能让你清晰掌握整体缺失状况,方便后续决策。

新手实操建议

作为机器学习新手,优先推荐先合并再做针对性清理——这样你能先看到合并后的数据全貌,避免提前删除导致丢掉潜在有用的数据。如果后续发现模型确实需要无缺失值的样本,再针对性删除关键列的NaN;要是数据集太大导致合并卡顿,再考虑提前清理非合并列的NaN。

内容的提问来源于stack exchange,提问作者Abhishek Teli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:50:38