Python: повышающая дискретизация с помощью операции обратного суммирования - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу пересчитать кадр данных столбца, а именно, я хочу пересчитать его в порядке, обратном операции в стиле sum(), предполагая, что каждая точка четна.Меня не особо волнует значение конечной точки - для моего случая это не имеет значения.

Вот упрощенная версия:

   Input  Output
0   10.0    3.33
1    NaN    3.33
2    NaN    3.33
3   24.0    6.00
4    NaN    6.00
5    NaN    6.00
6    NaN    6.00
7   15.0   15.00

Есть ли чистый / питонный способделая это?Мне не удалось найти ничего подобного в библиотеках повторной выборки, но я хотел спросить более опытных людей, прежде чем я соберу итеративное решение.

1 Ответ

0 голосов
/ 26 февраля 2019

Используйте groupby и transform от mean:

df['Input'].fillna(0).groupby(df['Input'].notna().cumsum()).transform('mean')

0     3.333333
1     3.333333
2     3.333333
3     6.000000
4     6.000000
5     6.000000
6     6.000000
7    15.000000
Name: Input, dtype: float64

Где,

df['Input'].notna().cumsum()

0    1
1    1
2    1
3    2
4    2
5    2
6    2
7    3
Name: Input, dtype: int64

Идея здесь состоит в том, чтобы вычислить среднее значение, отличное от NULL.включая все пустые ячейки, следующие за ним, и передают результат обратно на вход.Нам нужен вызов fillna, потому что mean по умолчанию будет игнорировать NaN.

...