我有一个看起来像这样的df:
col1 col2
NaN text
text text
NaN text
NaN text
如果col2
中有NaN
,我想清除col1
中的值。
新df应该如下所示:
col1 col2
NaN
text text
NaN
NaN
答案 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