简体   繁体   中英

Replace NaN values in one column from two other columns

I have a dataframe that is three dataframes concatenated together. I have variables denoting which dataframe they came from. For example, DAY_OF_WEEK_summer1 , DAY_OF_WEEK_summer2 and DAY_OF_WEEK_summer3 . A value can only exist in one of those three columns and I want to fill the NaN values in DAY_OF_WEEK_summer1 with the values from the summer2 or summer3 column. There are 11 of these attributes in total that I want to fill the NaN values in.
This is a sample dataframe:

df = pd.DataFrame({
    'DAY_OF_WEEK_summer1': [np.nan, 'WKDY', 'SAT', np.nan, np.nan],
    'DAY_OF_WEEK_summer2': [np.nan, np.nan, np.nan, 'WKDY', 'WKDY'],
    'DAY_OF_WEEK_summer3': ['SAT', np.nan, np.nan, np.nan, np.nan],
    'ROUTE_summer1': [np.nan, 5, 6, np.nan, np.nan],
    'ROUTE_summer2': [np.nan, np.nan, np.nan, 10, 10],
    'ROUTE_summer3': [1, np.nan, np.nan, np.nan, np.nan]
})

I would like the result to look like this:

DAY_OF_WEEK_summer1  |  DAY_OF_WEEK_summer2  |  DAY_OF_WEEK_summer3  |  ROUTE_summer1 |  ROUTE_summer2   | ROUTE_summer3
---------------------+-----------------------+-----------------------+----------------+------------------+---------------
       SAT           |         NaN           |          SAT          |     1          |     NaN          |        1
       WKDY          |         NaN           |          NaN          |     5          |     NaN          |        NaN
       SAT           |         NaN           |          NaN          |     6          |     NaN          |        NaN
       WKDY          |         WKDY          |          NaN          |     10         |     10           |        NaN
       WKDY          |         WKDY          |          NaN          |     10         |     10           |        NaN
import numpy as np

df['DAY_OF_WEEK_summer1'] = np.where(df['DAY_OF_WEEK_summer1'].isnull(), df['DAY_OF_WEEK_summer2'], df['DAY_OF_WEEK_summer1'])
df['DAY_OF_WEEK_summer1'] = np.where(df['DAY_OF_WEEK_summer1'].isnull(), df['DAY_OF_WEEK_summer3'], df['DAY_OF_WEEK_summer1'])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM