python pandas dataframe transpose

Convertir columna a fila en Python Pandas



dataframe transpose (3)

Tengo el siguiente marco de datos de pandas de Python:

fruits | numFruits --------------------- 0 | apples | 10 1 | grapes | 20 2 | figs | 15

Yo quiero:

apples | grapes | figs ----------------------------------------- Market 1 Order | 10 | 20 | 15

He mirado pivot (), pivot_table (), Transpose y unstack () y ninguno de ellos parece darme esto. Pandas novato, por lo que toda la ayuda apreciada.


Necesita set_index con transposició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

Tiempos :

#[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


Puede usar la API de transposición de pandas de la siguiente manera:

df.transpose()

Considerando a df como su marco de datos de pandas


pd.DataFrame([df.numFruits.values], [''Market 1 Order''], df.fruits.values) apples grapes figs Market 1 Order 10 20 15

Consulte la mejora de este concepto por parte de Israel. df.numFruits.values.reshape(1, -1) es más eficiente.