Зафиксируйте исторические данные со средним, если данные не изменились с python фреймами данных - PullRequest
1 голос
/ 21 апреля 2020

У меня есть некоторые исторические данные, которые выглядят так:

    d1  d2  d3  d4
p1   1   2   2   4
p2   2   2   2   10

Я знаю, что есть ошибка, когда нет изменений от одного дня к другому, поэтому я хочу заменить повторяющиеся значения на среднее значение смежные значения, и если повторное непрерывное значение более двух раз, оно должно быть пропорциональным. Таким образом, эти данные должны выглядеть следующим образом:

    d1  d2   d3  d4
p1   1   2   3*   4
p2   2  4*   8*  10

Где * означает, что они «исправлены». Для этого уже существует функция, или я должен выполнить итерации по данным вручную?

1 Ответ

1 голос
/ 21 апреля 2020

IIU C, вы хотите interpolate, где значения не изменились в одной и той же строке от одного столбца к следующему. Вы можете заменить повторяющиеся данные на nan благодаря mask и использовать shift, чтобы проверить, где значение повторяется.

print (df.mask(df.eq(df.shift(axis=1))).interpolate(axis=1))
     d1        d2        d3    d4
p1  1.0  2.000000  3.000000   4.0
p2  2.0  4.666667  7.333333  10.0

но чтобы получить 4 и 8, не уверен, что вы могли бы использовать правило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...