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

发布于 2025-01-09 03:00:55 字数 1397 浏览 1 评论 0原文

我有一个数据框,如果有 Nan,需要选择最接近的值。(来自 open 或 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 中有什么可以帮助我的吗?

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

﹏半生如梦愿梦如真 2025-01-16 03:00:55

如果首先存在于 price_orderbook 中,您可以将 open 中的缺失值替换为非缺失值,然后通过 Series.dropna 对于最接近的值使用 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  

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  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文