在数据框中选择最接近的值 pandas

pick nearest value in dataframe pandas

我有一个数据框,如果有 Nan,我需要选择最接近的值。(来自开放或 price_orderbook 列)以较接近者为准。

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

示例:

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

pandas 中有什么可以帮助我的吗?

您可以先用 price_orderbook 中存在的非缺失值替换 open 中的缺失值,然后用 Series.dropna and for nearest values use Series.reindexmethod='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