Después de Pandas Dataframe pd.concat obtengo NaNs

Tengo tres pandas si uno de ellos ha sido cambiado de fila y el primer elemento está vacío. Cuando concateno los tres df para obtener un único marco de datos de 3 columnas, obtengo todo el NaN en dos de las tres columnas:

df1:

                    S
2010-12-31         True
2011-01-01        False
2011-01-02        False

df2:

               P
2010-12-31           
2011-01-01    On
2011-01-02    On

df3:

              C
2010-12-31    On
2011-01-01    On
2011-01-02    On

res = pd.concat ([df1, df2, df3]):

                    P         C           S
2010-12-31        NaN        NaN         True
2011-01-01        NaN        NaN        False
2011-01-02        NaN        NaN        False

El orden parece estar invertido también ...

Muchas gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta