df = df.loc[:, (['total_bill', 'total_bill_upper', 'total_bill_lower'])
    ].unstack().reset_index().drop('level_1', axis=1).dropna()
df.columns = ['grp', 'val']
Seaborn Plot including different distributions of the same data