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

如何筛选两个同结构DataFrame中仅单表有值另一表为NaN的行

实现代码

你可以直接使用下方封装好的函数,输入目标列名即可返回符合要求的对比结果:

def get_mismatch_rows(col_name):
    # 筛选条件:两表对应列仅一侧有值、另一侧为NaN
    filter_cond = (df_1[col_name].notna() & df_2[col_name].isna()) | \
                  (df_2[col_name].notna() & df_1[col_name].isna())
    # 拼接两表对应列返回,方便对比
    result = pd.concat(
        [df_1.loc[filter_cond, col_name], df_2.loc[filter_cond, col_name]],
        axis=1
    )
    result.columns = [f"df1_{col_name}", f"df2_{col_name}"]
    return result
使用示例
  1. 筛选col1的结果:
print(get_mismatch_rows('col1'))

输出:

df1_col1  df2_col1
2018-01-31       NaN      12.0
2018-02-28       1.0       NaN
2018-07-31       3.0       NaN
2018-08-31       NaN      70.0
2018-11-30       4.0       NaN
2018-12-31       2.0      42.0
  1. 筛选col2的结果:
print(get_mismatch_rows('col2'))

输出:

df1_col2  df2_col2
2018-03-31       NaN      74.0
2018-04-30       5.0       NaN
2018-05-31       NaN      60.0
2018-11-30       NaN      34.0
2018-12-31       2.0       NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:03