Вы можете использовать целочисленное деление на //
со вспомогательным массивом по длине столбцов и перейти к groupby
на axis=1
с агрегатом sum
:
#if Name is column
df = df.set_index('Name')
K = 2
df = df.groupby(np.arange(len(df.columns)) // K, axis=1).sum()
print (df)
0 1
Name
A 5 13
B 3 7
C 7 17
D 6 10
E 6 6
Подробности :
print (np.arange(len(df.columns)))
[0 1 2 3]
print (np.arange(len(df.columns)) // K)
[0 0 1 1]
Или, если значения являются последовательными целыми числами, начинающимися с 1
, можно вычесть 1
и разделить:
df = df.groupby((df.columns - 1) // K, axis=1).sum()
print (df)
0 1
Name
A 5 13
B 3 7
C 7 17
D 6 10
E 6 6