Home > Enterprise >  pick nearest value in dataframe pandas
pick nearest value in dataframe pandas

Time:02-23

I have a dataframe and need to pick nearest value if there is Nan.(from open or price_orderbook column) whichever is nearer.

time                open    high    low     close   timestamp    price_orderbook
                        
2022-02-22 19:05:10 2.128   2.129   2.128   2.129   NaN              NaN
2022-02-22 19:05:11 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:12 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:13 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:14 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:15 2.129   2.129   2.129   2.129   NaN              NaN
2022-02-22 19:05:16 2.128   2.128   2.128   2.128   NaN              NaN
2022-02-22 19:05:17 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:18 2.128   2.128   2.128   2.128   1.645557e 09    2.1285
2022-02-22 19:05:19 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:20 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:21 NaN      NaN    NaN       NaN   1.645557e 09    2.1285
2022-02-22 19:05:22 NaN      NaN    NaN       NaN   NaN              NaN
2022-02-22 19:05:23 NaN      NaN    NaN       NaN   NaN              NaN

Example:

df['closer']= "value" if there is open or price_orderbook else search for nearest open or price_orderbook

Is there anything in pandas that helps me out.

CodePudding user response:

You can replace mising values from open by non missing values if exist in price_orderbook first, then remove all another missing values by Series.dropna and for nearest values use Series.reindex with method='nearest':

df['closer'] = (df['open'].fillna(df['price_orderbook'])
                          .dropna()
                          .reindex(df.index, method='nearest'))

print (df)
                      open   high    low  close     timestamp  \
2022-02-22 19:05:10  2.128  2.129  2.128  2.129           NaN   
2022-02-22 19:05:11    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:12    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:13    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:14    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:15  2.129  2.129  2.129  2.129           NaN   
2022-02-22 19:05:16  2.128  2.128  2.128  2.128           NaN   
2022-02-22 19:05:17    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:18  2.128  2.128  2.128  2.128  1.645557e 09   
2022-02-22 19:05:19    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:20    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:21    NaN    NaN    NaN    NaN  1.645557e 09   
2022-02-22 19:05:22    NaN    NaN    NaN    NaN           NaN   
2022-02-22 19:05:23    NaN    NaN    NaN    NaN           NaN   

                     price_orderbook  closer  
2022-02-22 19:05:10              NaN  2.1280  
2022-02-22 19:05:11              NaN  2.1280  
2022-02-22 19:05:12              NaN  2.1280  
2022-02-22 19:05:13              NaN  2.1290  
2022-02-22 19:05:14              NaN  2.1290  
2022-02-22 19:05:15              NaN  2.1290  
2022-02-22 19:05:16              NaN  2.1280  
2022-02-22 19:05:17              NaN  2.1280  
2022-02-22 19:05:18           2.1285  2.1280  
2022-02-22 19:05:19              NaN  2.1280  
2022-02-22 19:05:20              NaN  2.1285  
2022-02-22 19:05:21           2.1285  2.1285  
2022-02-22 19:05:22              NaN  2.1285  
2022-02-22 19:05:23              NaN  2.1285  
  • Related