Saltar al contenido

Convertir columna a fila en Python Pandas

Estate atento porque en esta crónica hallarás el hallazgo que buscas.

Solución:

Necesitas set_index con trasposición por T:

print (df.set_index('fruits').T)
fruits     apples  grapes  figs
numFruits      10      20    15

Si necesita cambiar el nombre de las columnas, es un poco complicado:

print (df.rename(columns='numFruits':'Market 1 Order')
         .set_index('fruits')
         .rename_axis(None).T)
                apples  grapes  figs
Market 1 Order      10      20    15

Otra solución más rápida es usar numpy.ndarray.reshape:

print (pd.DataFrame(df.numFruits.values.reshape(1,-1), 
                    index=['Market 1 Order'], 
                    columns=df.fruits.values))

                apples  grapes  figs
Market 1 Order      10      20    15

Horarios:

#[30000 rows x 2 columns] 
df = pd.concat([df]*10000).reset_index(drop=True)    
print (df)


In [55]: %timeit (pd.DataFrame([df.numFruits.values], ['Market 1 Order'], df.fruits.values))
1 loop, best of 3: 2.4 s per loop

In [56]: %timeit (pd.DataFrame(df.numFruits.values.reshape(1,-1), index=['Market 1 Order'], columns=df.fruits.values))
The slowest run took 5.64 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 424 µs per loop

In [57]: %timeit (df.rename(columns='numFruits':'Market 1 Order').set_index('fruits').rename_axis(None).T)
100 loops, best of 3: 1.94 ms per loop

pd.DataFrame([df.numFruits.values], ['Market 1 Order'], df.fruits.values)

                apples  grapes  figs
Market 1 Order      10      20    15

Refiérase a la mejora de jezrael de este concepto. df.numFruits.values.reshape(1, -1) es más eficiente

Te mostramos comentarios y valoraciones

Tienes la opción de añadir valor a nuestra información añadiendo tu veteranía en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *