Since you aren’t performing an aggregation, pd.DataFrame.pivot should be preferred to groupby / pivot_table:
res = df.pivot(index='date', columns="name", values="quantity")
print(res)
name A B C
date
1/1/2018 5 6 7
1/2/2018 9 8 6
If you wish you can use reset_index to elevate date to a column.