我有開始值和結束值,并且有 n 個缺失值。填充缺失值的邏輯是在開始值和結束值之間找到平均值。
偽代碼是:
start_index = 0
end_index = len(l)
while
l[mid] = (l[start_index] l[end_index])/2
update start_index and end_index
repeat
例如,開始 = 10,結束 = 20,缺失值計數為 4。
step - 1: l = [10, nan, nan, nan, nan, 20]
step - 2: l = [10. nan, 15, nan, nan, 20] => (10 20)/2 = 15
step - 3: l = [10. 12.5, 15, nan, nan, 20] => (10 15)/2 = 12.5
step - 4: l = [10. 12.5, 15, 17.5, nan, 20] => (15 20)/2 = 17.5
step - 5: l = [10. 12.5, 15, 17.5, 18.75, 20] => (17.5 20)/2 = 18.75
如何在 python 或 Pandas 中執行此操作。
我無法為此獲得優化的解決方案。任何幫助將是可觀的。
uj5u.com熱心網友回復:
您可以簡單地使用pandas.DataFrame.interpolate
您想要做的是在開始值和結束值之間進行簡單的線性插值以填充 NA 值。這就是pd.DataFrame.interpolate函式的定義。你可以limit_direction='both'這將有助于連續的 nans
uj5u.com熱心網友回復:
不確定這是否是您的意思,但此解決方案有效:
l = [10, np.nan, np.nan,np.nan,np.nan, 20]
def get_end_index():
for index, val in enumerate(l[start_index 1:]):
if val is not np.nan:
break
return start_index index 1
while np.nan in l:
start_index = l.index(np.nan) - 1
end_index = get_end_index()
mid_index = int((start_index end_index)/2)
l[mid_index] = (l[start_index] l[end_index])/2
l
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366375.html
