我有一个包含三列的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