df = pd.DataFrame({'a': [3] * 5, 'b': [2] * 5, 'c': [1] * 5, 'd': [0] * 5,
    'e': [6] * 5})
df
df.mask(np.triu(np.ones(df.shape)).astype(np.bool))
pandas: get elements (index ,col) below diagonal in DataFrame