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
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
