Мой фрейм данных:
ordercode quantity
PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 2
PMC11-AA1U1FJWWJA 3
PMC11-AA1L1FJWWJA 3
Мой желаемый результат:
Group ordercode quantity
0 PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 1
1 PMC11-AA1U1FBWWJA+I7 1
PMC11-AA1U1FJWWJA 3
2 PMC11-AA1L1FJWWJA 3
Так что здесь мой желаемый результат основан на column['quantity']
.Максимальное значение количества составляет 4
.
В group0 & group1
суммарные значения (1 + 1 + 1 + 1 = 4) (1 + 3 = 4) (т. Е. Сохранение максимального значения количества равным 4).В group2
мы можем видеть, что нет добавляемых значений, поэтому группа формируется с помощью остатка (здесь это 3).В group0 & group1
мы можем видеть, что значение PMC11-AA1U1FBWWJA+I7
разбивается.
Я получил небольшую помощь от форума и выполнил следующую кодировку:
df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()),
columns=['ordercode'])
df['quantity'] = 1
df['group'] = sorted(range(0, len(df)/3, 1) * 4)[0:len(df)]
df.groupby(['group', 'ordercode']).sum()
, но я получаю ошибку.
Type error: 'float' object cannot be interpreted as an integer
Если я использую int
в
df['group'] = sorted(range(0, int(len(df)/3), 1) * 4)[0:len(df)]
снова получаю typeerror
.Кто-нибудь может сказать мне, почему?