df.columns = ['d', 't', 'n'] res = df.merge(pd.DataFrame(list(range(24)),columns=['t']),on='t',how='right').pivot(index='d', columns='t', values='n').dropna(how='all').fillna(0)