У меня есть следующий фрейм данных:
df = pd.DataFrame([[0, 1, 2, 4, np.nan, np.nan, np.nan,1],
[0, 1, 2 ,np.nan, np.nan, np.nan,np.nan,1],
[0, 2, 2 ,np.nan, 2, np.nan,1,1]])
С выходом:
0 1 2 3 4 5 6 7
0 0 1 2 4 NaN NaN NaN 1
1 0 1 2 NaN NaN NaN NaN 1
2 0 2 2 NaN 2 NaN 1 1
с dtypes:
df.dtypes
0 int64
1 int64
2 int64
3 float64
4 float64
5 float64
6 float64
7 int64
Затем применяется скользящее суммирование снизу:
df.rolling(window = 7, min_periods =1, axis = 'columns').sum()
Результат выглядит следующим образом:
0 1 2 3 4 5 6 7
0 0.0 1.0 3.0 4.0 4.0 4.0 4.0 4.0
1 0.0 1.0 3.0 NaN NaN NaN NaN 4.0
2 0.0 2.0 4.0 NaN 2.0 2.0 3.0 5.0
Я заметил, что скользящее окно останавливается и запускается снова всякий раз, когда dtype
следующего столбца отличается.
Однако у меня есть фрейм данных, в котором все столбцы имеют один и тот же тип object
.
df = df.astype('object')
, который имеет вывод:
0 1 2 3 4 5 6 7
0 0.0 1.0 3.0 7.0 7.0 7.0 7.0 8.0
1 0.0 1.0 3.0 3.0 3.0 3.0 3.0 4.0
2 0.0 2.0 4.0 4.0 6.0 6.0 7.0 8.0
Мой желаемый результат, однако, останавливается и начинается снова после появления значения nan
. Это будет выглядеть так:
0 1 2 3 4 5 6 7
0 0.0 1.0 3.0 7.0 NaN NaN NaN 8.0
1 0.0 1.0 3.0 NaN NaN NaN Nan 4.0
2 0.0 2.0 4.0 NaN 6.0 NaN 7.0 8.0
Я подумал, что должен быть способ, при котором значения NaN не учитываются, но и не заполняются значениями, полученными из скользящего окна.
Все может помочь!