如果存在另一列中的值,如何从单元格中清除值?

时间:2018-12-11 02:46:33

标签: python python-3.x pandas

我有一个看起来像这样的df:

col1    col2 
NaN     text
text    text
NaN     text
NaN     text

如果col2中有NaN,我想清除col1中的值。

新df应该如下所示:

col1    col2 
NaN     
text    text
NaN     
NaN     

3 个答案:

答案 0 :(得分:3)

您正在寻找mask ing操作:

df['col2'] = df['col2'].mask(df.col1.isna(), '')
# df['col2'] = np.where(df.col1.isna(), '', df['col2'])

df
   col1  col2
0   NaN      
1  text  text
2   NaN      
3   NaN      

如果要在第二列中使用NaN而不是空格,则将第二个参数省略为mask

答案 1 :(得分:1)

使用dropna + reindex

df.dropna('col1').reindex(df.index) # fixing by cold :-)

   col1  col2
0   NaN   NaN
1  text  text
2   NaN   NaN
3   NaN   NaN

答案 2 :(得分:0)

第一步: 通过复制OP的示例创建df。(首先复制OP的示例,然后运行以下命令)。

df=pd.read_clipboard();

第二步: 。能否请您按照以下步骤操作。

df.loc[df['col1'].isnull(), 'col2'] = ''
df

输出如下。

   col1  col2
0  NaN
1  text  text 
2  NaN
3  NaN