Python分割数据框

时间:2018-09-25 09:17:45

标签: python-3.x pandas dataframe

我的目标是根据以下数据框中的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的值分裂了。

没问题。

df1df2中,其显示值错误。

在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,但还是同样的错误。

如何解决这个问题?

0 个答案:

没有答案