Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert a Pandas DataFrame into a single row DataFrame

Tags:

python

pandas

I've seen similar questions but mine is more direct and abstract.

I have a dataframe with "n" rows, being "n" a small number.We can assume the index is just the row number. I would like to convert it to just one row.

So for example if I have

A,B,C,D,E
---------
1,2,3,4,5
6,7,8,9,10
11,12,13,14,5

I want as a result a dataframe with a single row:

A_1,B_1,C_1,D_1,E_1,A_2,B_2_,C_2,D_2,E_2,A_3,B_3,C_3,D_3,E_3
--------------------------
1,2,3,4,5,6,7,8,9,10,11,12,13,14,5

What would be the most idiomatic way to do this in Pandas?

like image 623
user3635284 Avatar asked Dec 10 '17 04:12

user3635284


2 Answers

Let's try this, using stack, to_frame, and T:

df.index = df.index + 1
df_out = df.stack()
df_out.index = df_out.index.map('{0[1]}_{0[0]}'.format)
df_out.to_frame().T

Output:

   A_1  B_1  C_1  D_1  E_1  A_2  B_2  C_2  D_2  E_2  A_3  B_3  C_3  D_3  E_3
0    1    2    3    4    5    6    7    8    9   10   11   12   13   14    5
like image 156
Scott Boston Avatar answered Oct 21 '22 05:10

Scott Boston


Unstack and map i.e

ndf = df.unstack().to_frame().T

ndf.columns = ndf.columns.map('{0[0]}_{0[1]}'.format) 

    A_0  A_1  A_2  B_0  B_1  B_2  C_0  C_1  C_2  D_0  D_1  D_2  E_0  E_1  E_2
0    1    6   11    2    7   12    3    8   13    4    9   14    5   10    5

In case you want the sorted columns then you can do

ndf = df.unstack().to_frame().T.sort_index(1,1)
like image 40
Bharath Avatar answered Oct 21 '22 03:10

Bharath