python – Pandas:如何在给定列中分组并获取唯一数据?

我有一个包含三列的DataFrame:

id     order     ordernumber  
1      app         1
1      pip         2
1      org         3
2      app         1
3      app         1
3      org         3

“订单”列只有3个唯一值(app,pip和org).我想得到一个DataFrame,它显示每个id,每种订单的订单数量,以及订单总数.

结果如下所示:

id     app        pip    org    total
1      1           1      1      3
2      1           0      0      1
3      1           0      1      2

最佳答案 您可以使用pivot_table来获取计数:

>>> df2 = df.pivot_table(index='id', columns='order', aggfunc='size', fill_value=0)
>>> df2
order  app  org  pip
id
1        1    1    1
2        1    0    0
3        1    1    0

然后,您可以通过对每行求和来添加“总计”列:

>>> df2['total'] = df2.sum(axis=1)
>>> df2
order  app  org  pip  total
id
1        1    1    1      3
2        1    0    0      1
3        1    1    0      2
点赞