Interprete las columnas de ceros y unos como binarios y almacene como una columna entera

Tengo un marco de datos de ceros y unos. Quiero tratar cada columna como si sus valores fueran una representación binaria de un entero. ¿Cuál es la forma más fácil de hacer esta conversión?

Quiero esto:

df = pd.DataFrame([[1, 0, 1], [1, 1, 0], [0, 1, 1], [0, 0, 1]])

print df

   0  1  2
0  1  0  1
1  1  1  0
2  0  1  1
3  0  0  1

convertido a:

0    12
1     6
2    11
dtype: int64

Tan eficientemente como sea posible.