Как заполнить нулевые значения средним значением вышеуказанного значения и нижнего значения в python? - PullRequest
2 голосов
/ 10 июля 2020

Мои данные выглядят так:

    ID      gcs    compact    active_clay       WTS     LOI
0   EA01    1530    40          9.02            22.7    4.58
1   EA02    NAN     NAN         NAN             NAN      NAN
2   EA03    1550    39          9.02            23.9    4.58
3   EA04    NAN     NAN          NAN            NAN      NAN
4   EA05    NAN     NAN          NAN            NAN      NAN
5   EA06    NAN     NAN          NAN            NAN      NAN
6   EA07    1520    40           9.02           24.9     4.58
7   EA08    NAN     NAN          NAN            NAN      NAN
8   EA09    1530    40           9.02           23.9     4.52
9   EA10    NAN    NAN           NAN            NAN      NAN

Я хотел, чтобы нулевые значения были заполнены средним из приведенных выше и ниже значений для всех данных.

Пример:

Значения NULL в 1-м индексе должны быть заполнены средним значением (значение индекса 0, значение индекса 2)

Значения NULL в 3-м индексе должны быть заполнены средним значением (значение 2-го индекса, 6-е значение индекса)

Нулевые значения в 4-м индексе должны быть заполнены средним значением (3-е значение индекса, 6-е значение индекса)

Нулевые значения в 5-м индексе должны быть заполнены средним (4-м значение индекса, 6-е значение индекса) и так далее ..

Это должно быть сделано для всех столбцов Как я могу это сделать. Пожалуйста, помогите.

1 Ответ

1 голос
/ 10 июля 2020

Думаю, вам нужно DataFrame.interpolate с заполнением пропущенных значений:

df = df.interpolate().bfill()
print (df)
         Date     GCS  Compactability  Active Clay   WTS   LOI  Moisture
0  01-01-2019  1530.0            40.0         9.02  22.7  4.58      3.10
1  01-01-2019  1540.0            39.5         9.02  23.3  4.58      3.05
2  01-01-2019  1550.0            39.0         9.02  23.9  4.58      3.00
3  01-01-2019  1550.0            39.0         9.02  23.9  4.58      3.00
4  01-01-2019  1550.0            39.0         9.02  23.9  4.58      3.00
...