简体   繁体   English

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

[英]Pandas Set multiple column and row values to nan based on another dataframe

I have two large dataframes, df1 :我有两个大数据df1

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

And df2 is df2

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

Both dataframes have same index columns Col1 and Col2 and same value columns Val1, Val2, Val3 .两个数据框都有相同的索引列Col1Col2以及相同的值列Val1, Val2, Val3

I want to set the values in df2 to nan where it is Null in df1 to get the following:我想将df2中的值设置为nan ,其中df1中的Null得到以下信息:

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

I tried the following:我尝试了以下方法:

idx = df1.isnull()
df2.loc[idx] = np.nan

But it is not working.但它不起作用。

You can use df.where with df.notna您可以将df.wheredf.notna一起使用

df2.where(df1.notna())

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

Another way另一种方式

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

Alternatively或者

m=df1.notna()

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

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何基于另一列的NaN值设置熊猫数据框中的值? - How set values in pandas dataframe based on NaN values of another column? 根据另一列中的“NaN”值在 Pandas Dataframe 中创建一个新列 - Create a new column in Pandas Dataframe based on the 'NaN' values in another column Pandas:根据另一个数据框中的值更新数据框中的多列 - Pandas : Updating multiple column in a dataframe based on values from another dataframe Pandas dataframe,如何在单行中设置多个列值? - Pandas dataframe, how to set multiple column values in a single row? Pandas数据框:根据另一列中的值替换多行 - Pandas dataframe: Replace multiple rows based on values in another column 根据条件将多个列值设置为 NaN - set multiple column values to NaN based on condition 根据 pandas dataframe 中的相邻列将 NaN 值替换为特定文本 - Replace NaN values with specific text based on adjacent column in pandas dataframe 根据其他列中的“NaN”值在 Pandas Dataframe 中创建一个新列 - Create a new column in Pandas Dataframe based on the 'NaN' values in other columns Pandas:如何根据另一列替换列中的 Nan 值? - Pandas: How to replace values of Nan in column based on another column? pandas Dataframe基于键列,将NaN值替换为以前的值 - pandas Dataframe Replace NaN values with with previous value based on a key column
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM