Как я могу создать новый фрейм данных, взяв скользящую сумму / сумму СТОЛБЦА другого фрейма данных?

import pandas as pd
df = {'a': [1,1,1], 'b': [2,2,2], 'c': [3,3,3], 'd': [4,4,4], 'e': [5,5,5], 'f': [6,6,6], 'g': [7,7,7]}
df1 = pd.DataFrame(df, columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
dg = {'h': [10,10,10], 'i': [14,14,14], 'j': [18,18,18], 'k': [22,22,22]}
df2 = pd.DataFrame(dg, columns = ['h', 'i', 'j', 'k'])

df1

    a   b   c   d   e   f   g
0   1   2   3   4   5   6   7
1   1   2   3   4   5   6   7
2   1   2   3   4   5   6   7

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

df2

    h   i   j   k
0   10  14  18  22
1   10  14  18  22
2   10  14  18  22

df2 - это результирующий фрейм данных после добавления 4 последовательных столбцов df1.

Например: столбец h в df2 - это сумма столбцов a, b, c, d в df1; столбец i в df2 - это сумма столбцов b, c, d, e в df1; столбец j в df2 - это сумма столбцов c, d, e, f в df1; столбец k в df2 - это сумма столбцов d, e, f, g в df1.

Я не мог найти подобного вопроса / ответа / примера, подобного этому. Буду признателен за любую помощь.


person user13599745    schedule 23.05.2020    source источник


Ответы (1)


Вы можете использовать прокрутку по 4 столбцам и взять сумму. Наконец, отбросьте первые 3 столбца.

df1.rolling(4, axis=1).sum().dropna(axis=1)

    d       e       f       g
0   10.0    14.0    18.0    22.0
1   10.0    14.0    18.0    22.0
2   10.0    14.0    18.0    22.0
person Allen    schedule 23.05.2020
comment
Аллен, спасибо за быстрый и точный ответ. Очень признателен. - person user13599745; 23.05.2020