Python 熊猫基于另一个数据帧将多个列和行值设置为nan

Python 熊猫基于另一个数据帧将多个列和行值设置为nan,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有两个大数据帧,df1: Col1 Col2 Val1 Val2 Val3 asd ASYL 4.2 4.2 ppq CONE 35 35 DA HU 100 100 而df2是 Col1 Col2 Val1 Val2 Val3 asd ASYL 7 12 17 ppq CONE 17 1

我有两个大数据帧,
df1

Col1    Col2    Val1    Val2    Val3
asd     ASYL    4.2             4.2
ppq     CONE            35      35
DA      HU      100     100
df2

Col1    Col2    Val1    Val2  Val3
asd     ASYL    7       12    17
ppq     CONE    17      19    19
DA      HU      5       14    13
两个数据帧具有相同的索引列
Col1
Col2
以及相同的值列
Val1、Val2、Val3

我想将
df2
中的值设置为
nan
,其中
df1
中的
Null
,以获得以下内容:

Col1    Col2    Val1    Val2  Val3
asd     ASYL    7             17
ppq     CONE            19    19
DA      HU      5       14      
idx = df1.isnull()
df2.loc[idx] = np.nan
我尝试了以下方法:

Col1    Col2    Val1    Val2  Val3
asd     ASYL    7             17
ppq     CONE            19    19
DA      HU      5       14      
idx = df1.isnull()
df2.loc[idx] = np.nan
但它不起作用。

您可以与一起使用

另一种方式

df1.mask(df1.notna(),df2)
或者

m=df1.notna()

pd.DataFrame(np.where(m, df2, np.nan))

请参见@Ch3steR解决方案的两个备选方案