Few other ways
Option 1 unstack
In [1413]: df[['Bin1', 'Bin3']].unstack().values.tolist()
Out[1413]: ['A', 'B', 'C', 7L, 8L, 9L]
Option 2 ravel
In [1426]: df[['Bin1', 'Bin3']].values.ravel(order='A')
Out[1426]: array(['A', 'B', 'C', 7L, 8L, 9L], dtype=object)
Timings
In [1446]: df.shape
Out[1446]: (60000, 3)
In [1447]: %timeit df['Bin1'].values.tolist() + df['Bin3'].values.tolist()
100 loops, best of 3: 2.95 ms per loop
In [1440]: %timeit df['Bin1'].tolist() + df['Bin3'].tolist()
100 loops, best of 3: 4.87 ms per loop
In [1442]: %timeit df[['Bin1', 'Bin3']].values.ravel(order='A').tolist()
100 loops, best of 3: 5.86 ms per loop
In [1443]: %timeit df[['Bin1', 'Bin3']].unstack().values.tolist()
100 loops, best of 3: 9.32 ms per loop
In [1444]: %timeit df[["Bin1","Bin2"]].values.T.flatten().tolist()
100 loops, best of 3: 6.91 ms per loop
In [1445]: %timeit [it for subl in df[["Bin1","Bin3"]].values.T.tolist() for it in subl]
10 loops, best of 3: 20.3 ms per loop