我的目标是根据以下数据框中的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
,但还是同样的错误。
如何解决这个问题?