亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在熊貓數據框中的缺失值中查找最接近的有效數字

在熊貓數據框中的缺失值中查找最接近的有效數字

嚕嚕噠 2021-09-14 15:25:20
我有一個數據集,其中包含多個不同長度的缺失序列,我想在其中找到某些特定日期在這些序列之前和之后出現的第一個有效數字。在下面的示例數據集中,我想找到ColumnB最接近日期 的有效數字2018-11-26。數據樣本:Date         ColumnA   ColumnB2018-11-19   107.00      NaN2018-11-20   104.00      NaN2018-11-21   106.00      NaN2018-11-22   105.24    80.002018-11-23   104.63      NaN2018-11-26   104.62      NaN2018-11-28   104.54      NaN2018-11-29   103.91    86.882018-11-30   103.43      NaN2018-12-01   106.13      NaN2018-12-02   110.83      NaN預期輸出:[80, 86.88]一些細節:如果這個特定序列是唯一一個有缺失值的序列,我將能夠使用For Loops,或熊貓函數first_valid_index()或isnull()如熊貓中所述 - 在列中找到第一個非空值來解決它,但這很少是這樣。我可以使用一些來解決這個問題For Loops,但是對于較大的數據集來說它很慢而且不是很優雅,所以我真的很想聽聽其他建議!
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

試試這個方法,獲取索引和切片,得到第一個有效數字


idx= np.where(df['Date']=='2018-11-26')[0][0]

# idx 3


num = (df.loc[df.loc[:idx,'ColumnB'].first_valid_index(),'ColumnB'],

       df.loc[df.loc[idx:,'ColumnB'].first_valid_index(),'ColumnB'])


num

(80.0, 86.879999999999995)


查看完整回答
反對 回復 2021-09-14
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

我會這樣嘗試:


import pandas as pd

import numpy as np


df_vld = df.dropna()


idx = np.argmin(abs(df_vld.index - pd.datetime(2018, 11,26)))

# 1


df_vld.loc[df_vld.index[idx]]

Out:

ColumnA    103.91

ColumnB     86.88

Name: 2018-11-29 00:00:00, dtype: float64


查看完整回答
反對 回復 2021-09-14
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號