Моя цель - сгруппировать фрейм данных на основе column['quantity']
в следующих фреймах данных
мой фрейм данных:
df
ordercode quantity
PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 2
PMC11-AA1U1FJWWJA 3
PMC11-AA1L1FJWWJA 3
df1:
ordercode quantity
PMC21-AA1U1FBWBJA 1
PMP23-GR1M1FB3CJ 1
PMC11-AA1U1FJWWJA 1
PMC11-AA1U1FBWWJA+I7 2
df2
ordercode quantity
Мой код:
df = pd.DataFrame(np.concatenate(df.apply(lambda x: [x[0]] * x[1], 1).as_matrix()),
columns=['ordercode'])
df['quantity'] = 1
df['group'] = sorted(list(range(0, len(df) // 3, 1)) * 4)[0:len(df)]
df = df.groupby(['group', 'ordercode']).sum()
print(df)
С помощью приведенной выше кодировки я получил мой результат в df
, как показано ниже.
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
В group0 & group1
суммарные значения (1 + 1 + 1 + 1 = 4) (1 + 3 = 4) (т.е. сохраняя максимальное значение количества как 4).В group2
мы можем видеть, что нет добавляемых значений, поэтому группа формируется с помощью остатка (здесь это 3). В group0 & group1
мы можем видеть, что значение PMC11-AA1U1FBWWJA+I7
разбивается.
Нет проблем в этом.
В df1
& df2
ошибка показа значения.
в df1:
value error: length of values does not match length of index
raise Value error('length of value does not match length of index')
в df2:
value error:need at least one array to concatenate.
Я мог понять, что мой df2
пуст и не имеет index
.Я использовал pd.Series
, но опять та же ошибка.
как решить эту проблему?