Вы близки, нужно GroupBy.size
для подсчета:
df1 = df.pivot_table(index=['uid','date'],columns='interaction',aggfunc='size',fill_value=0)
Другие решения:
df1 = df.groupby(['uid','date','interaction']).size().unstack(fill_value=0)
df1 = df.groupby(['uid','date'])['interaction'].value_counts().unstack(fill_value=0)
df1 = pd.crosstab([df['uid'],df['date']], df['interaction'])
print (df1)
interaction comment like
uid date
1 2016-12-04 0 1
2016-12-05 1 2
2 2016-12-04 0 1
2016-12-05 1 2
Последняя очистка некоторых данных:
df1 = df1.reset_index().rename_axis(None, 1)
print (df1)
uid date comment like
0 1 2016-12-04 0 1
1 1 2016-12-05 1 2
2 2 2016-12-04 0 1
3 2 2016-12-05 1 2