0

I have a dataframe like this:

user   events 
  A      X
  A      X
  A      Y
  B      Z

Using pandas, how can I get a final dataframe like the following?

user   X    Y   Z
 A     2    1   0
 B     0    1   1
jpp
  • 147,904
  • 31
  • 244
  • 302
Thabra
  • 317
  • 2
  • 9

1 Answers1

0

You can use pd.pivot_table:

res = df.pivot_table(index='user', columns='events',
                     aggfunc=len, fill_value=0)

print(res)

events  X  Y  Z
user           
A       2  1  0
B       0  0  1
jpp
  • 147,904
  • 31
  • 244
  • 302