pandas girando un dataframe, duplicando filas

Estoy teniendo un pequeño problema con girar en pandas. El dataframe (fechas, ubicación, datos) en el que estoy trabajando se ve así:

 dates location data date1 AX date2 AY date3 AZ date1 B XX date2 B YY 

Básicamente, estoy tratando de girar en la ubicación para terminar con un dataframe como:

 dates ABC date1 X XX etc... date2 Y YY date3 Z ZZ 

Desafortunadamente, cuando hago pivotes, el índice, que es equivalente a la columna de fechas original, no cambia y obtengo:

 dates ABC date1 X NA etc... date2 Y NA date3 Z NA date1 NA XX date2 NA YY 

¿Alguien sabe cómo puedo solucionar este problema para obtener el formato de dataframe que estoy buscando?

Actualmente estoy llamando a Pivot como tal:

 df.pivot(index="dates", columns="location") 

porque tengo un número de columnas de datos que quiero pivotar (no quiero enumerar cada una como un argumento). Creo que, de forma predeterminada, pivota pivota el rest de las columnas en el dataframe. Gracias.

Si tiene varias columnas de datos, llamar al pivote sin las columnas de valores debería darle un marco pivotado con un MultiIndex como las columnas:

 In [3]: df Out[3]: columns data1 data2 index 0 a -0.602398 -0.982524 x 1 a 0.880927 0.818551 y 2 b -0.238849 0.766986 z 3 b -1.304346 0.955031 x 4 c -0.094820 0.746046 y 5 c -0.835785 1.123243 z In [4]: df.pivot('index', 'columns') Out[4]: data1 data2 columns abcabc index x -0.602398 -1.304346 NaN -0.982524 0.955031 NaN y 0.880927 NaN -0.094820 0.818551 NaN 0.746046 z NaN -0.238849 -0.835785 NaN 0.766986 1.123243 

¿Cómo llama a DataFrame.pivot y a qué tipo de datos pertenece su columna de fechas?

Supongamos que tengo un DataFrame que es similar al suyo, las columnas de fechas contienen objetos de fecha y hora:

 In [52]: df Out[52]: data dates loc 0 0.870900 2000-01-01 00:00:00 A 1 0.344999 2000-01-02 00:00:00 A 2 0.001729 2000-01-03 00:00:00 A 3 1.565684 2000-01-01 00:00:00 B 4 -0.851542 2000-01-02 00:00:00 B In [53]: df.pivot('dates', 'loc', 'data') Out[53]: loc AB dates 2000-01-01 0.870900 1.565684 2000-01-02 0.344999 -0.851542 2000-01-03 0.001729 NaN 

Acabo de responder a mi propia pregunta. Estaba usando un módulo Sybase antiguo para importar datos y creo que usaba un objeto DateTimeType antiguo de mxDatetime. En ese módulo, una fecha y hora del 01 de enero de 2011 no sería necesariamente igual a otra fecha y hora del 01 de enero de 2011 (por ejemplo, cada fecha y hora fue única). Por lo tanto, el pivote del dataframe trató cada valor de columna como único en el índice.

Gracias por la ayuda.