Ваши данные:
df = pd.DataFrame({'order':['A', 'B', 'C', 'D', 'E', 'F'],'quantity':[1,1,2,3,3,4]})
Решение:
df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()),
columns=['order'])
df['quantity'] = 1
df['group'] = sorted(range(0, len(df)/3, 1) * 4)[0:len(df)]
Вывод:
order quantity group
0 A 1 0
1 B 1 0
2 C 1 0
3 C 1 0
4 D 1 1
5 D 1 1
6 D 1 1
7 E 1 1
8 E 1 2
9 E 1 2
10 F 1 2
11 F 1 2
12 F 1 3
13 F 1 3
Затем сгруппировать и суммировать.
df.groupby(['group', 'order']).sum()
Вывод:
quantity
group order
0 A 1
B 1
C 2
1 D 3
E 1
2 E 2
F 2
3 F 2
После этого вы можете использовать reset_index (), если хотите.
Надеюсь, это поможет.
Должен ли я объяснить решение?Это у вас работает?