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

Python:基于另一DataFrame非空值将目标DataFrame对应位置设为NaN

基于DataFrame对应位置的NaN替换方案

原始数据

df1:

ticker           A        B        C
date
2022-01-01       NaN      NaN      100
2022-01-02       NaN      200      NaN
2022-01-03       100      NaN      NaN
2022-01-04       NaN      NaN      120

df2:

ticker           A        B        C
date
2022-01-02       145      233      100
2022-01-03       231      200      241
2022-01-04       100      200      422
2022-01-05       424      324      222
2022-01-06       400      421      320

需求

将df2中所有与df1对应位置非空的单元格值设为np.nan,得到目标df3:

ticker           A        B        C
date
2022-01-02       145      NaN      100
2022-01-03       NaN      200      241
2022-01-04       100      200      NaN
2022-01-05       424      324      222
2022-01-06       400      421      320

Pythonic实现(无循环)

直接利用Pandas原生向量化方法即可完成,两种简洁写法任选:

方法1:使用where

import numpy as np
import pandas as pd

# 假设df1、df2已提前定义
df3 = df2.where(df1.isna(), np.nan)

逻辑:保留df2中满足df1.isna()(df1对应位置为空)的值,不满足条件的位置替换为np.nan。

方法2:使用mask

df3 = df2.mask(df1.notna())

逻辑:当df1.notna()(df1对应位置非空)的条件成立时,自动将df2对应位置替换为NaN(mask默认替换值为NaN,无需额外指定)。

两种方法均为Pandas优化后的向量化操作,完全避免循环,执行效率远高于逐行逐列遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:35:34