Alternative ajcr:
df2 = df.pivot_table(index='id', columns='order', aggfunc=lambda x: len(x.unique()), margins=True)
aggfunc uniques.
In [4]: df2 = df.pivot_table(index='id', columns='order', aggfunc=lambda x: len(x.unique()), margins=True)
In [5]: df2
Out[5]:
ordernum
order app org pip All
id
1 1 1 1 3
2 1 NaN NaN 1
3 1 1 NaN 2
All 1 1 1 3
margins / pivot_table.
NaN , :
df2.fillna(0, inplace=True)
In [6]: df2.fillna(0, inplace=True)
In [7]: df2
Out[7]:
ordernum
order app org pip All
id
1 1 1 1 3
2 1 0 0 1
3 1 1 0 2
All 1 1 1 3