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

2024-10-01 07:42:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个大数据帧,df1

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

而且{}是

Col1    Col2    Val1    Val2  Val3
asd     ASYL    7       12    17
ppq     CONE    17      19    19
DA      HU      5       14    13

两个数据帧具有相同的索引列Col1Col2以及相同的值列Val1, Val2, Val3

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

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

但它不起作用


Tags: 数据nandacol2col1df1df2asd
2条回答

可以将^{}^{}一起使用

df2.where(df1.notna())

Col1    Col2    Val1   Val2  Val3
asd     ASYL    7      NaN    17
ppq     CONE   NaN      19    19
DA      HU      5       14    NaN   

另一种方式

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

或者

m=df1.notna()

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

enter image description here

相关问题 更多 >