0

I have a df like this

     Estado         Estado_OMM
     SUSPENDIDA     CLAUSURADA
     SUSPENDIDA     CLAUSURADA
     OPERATIVA      nan 
     PARCIALMENTE   nan
     OPERATIVA      nan
     OPERATIVA      OPERATIVA

I want to replace (only the values that are not nan) df['Estado'] to df['Estado_OMM'] (same row).

I tried this

for i in df['Estado_OMM']!=np.nan:
   df['Estado']=df['Estado_OMM']

Also i tried this

if df['Estado_OMM']!=np.nan:
   df['Estado']=df['Estado_OMM']

Noone works. Can you help me please?

0

2 Answers 2

1

You can use np.where:

df['replaced_Estado'] = np.where(df['Estado_OMM'].notna(), df['Estado_OMM'], df['Estado'])

Output:

         Estado  Estado_OMM
0    CLAUSURADA  CLAUSURADA
1    CLAUSURADA  CLAUSURADA
2     OPERATIVA         NaN
3  PARCIALMENTE         NaN
4     OPERATIVA         NaN
5     OPERATIVA   OPERATIVA
Sign up to request clarification or add additional context in comments.

Comments

1
>>> mask = df['Estado_OMM'].notna()
>>> df.loc[mask, 'Estado'] = df.loc[mask, 'Estado_OMM']
>>> df

         Estado  Estado_OMM
0    CLAUSURADA  CLAUSURADA
1    CLAUSURADA  CLAUSURADA
2     OPERATIVA         NaN
3  PARCIALMENTE         NaN
4     OPERATIVA         NaN
5     OPERATIVA   OPERATIVA

Alternatively you could do it the other way around:

>>> df['Estado'] = df['Estado_OMM'].fillna(df['Estado'])
>>> df
         Estado  Estado_OMM
0    CLAUSURADA  CLAUSURADA
1    CLAUSURADA  CLAUSURADA
2     OPERATIVA         NaN
3  PARCIALMENTE         NaN
4     OPERATIVA         NaN
5     OPERATIVA   OPERATIVA

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.