【发布时间】:2021-08-20 04:42:47
【问题描述】:
我的代码应该将缺失值更改为其有效的直接相邻值。但是,它似乎没有正确运行,我不太确定错误在哪里。
因此必须将缺失值校正为其相邻值的平均值。但是,如果存在连续的缺失值,则应使用有效的相邻值对其进行校正。仅使用基本的 Python 函数,如 for 循环和 if/else。
data = [1, -999, -999, 3, 4]
missing = -999
for i, num in enumerate(data):
if num == missing:
if [i-1] and [i+1] != missing:
data[i] = (data[i-1] + data[i+1]) / 2
elif [i-1] != missing and [i+1] == missing:
data[i] = data[i-1]
elif [i+1] != missing and [i-1] == missing:
data[i] = data[i+1]
else:
data[i] = data[i]
print(data)
例如:
data = [1, 2, -999, 4, 5], [1, -999, -999, 3, 4], [-999, -999, 3, 4, 5], [-999, -999, -999, -999, -999]
expected output = [1, 2, 3, 4, 5], [1, 1, 3, 3, 4], [3, 3, 3, 4, 5], [-999, -999, -999, -999, -999]
【问题讨论】:
-
[i-1]本身与data列表无关。 -
如果
num == missing :里面不应该是data[i-1]和data[i+1]吗?
标签: python python-3.x for-loop if-statement data-cleaning