Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Transpose Pandas DataFrame and change the column headers to a list

Tags:

python

pandas

I have the following Pandas sub-dataframe

         col1  name1  name2
522      a     10     0.2
1021     b     72    -0.1

col1 has no duplicate. I want to transpose the dataframe and change the column header to col1 values. Ideally the output should look like

Variable  a     b
name1     10    72
name2     0.2  -0.1

it is easy to transpose the df and lable the first column as Variable

df.transpose().reset_index().rename(columns={'index':'Variable'})

the resulted DF will have indices of original DF as column headers (and they are not sorted and dont start from 1 in my data!) How can I change the rest of column names?

like image 644
Hamed Avatar asked Nov 06 '17 14:11

Hamed


People also ask

How do I change a column name to a List in Pandas?

tolist() you can convert pandas DataFrame Column to List. df['Courses'] returns the DataFrame column as a Series and then use values. tolist() to convert the column values to list.

Can you transpose a Pandas DataFrame?

Pandas DataFrame: transpose() functionThe transpose() function is used to transpose index and columns. Reflect the DataFrame over its main diagonal by writing rows as columns and vice-versa. If True, the underlying data is copied. Otherwise (default), no copy is made if possible.

How do I convert a DataFrame to a List in Pandas?

To convert Pandas DataFrame to List in Python, use the DataFrame. values(). tolist() function.


1 Answers

Need set_index + T:

df = df.set_index('col1').T
print (df)
col1      a     b
name1  10.0  72.0
name2   0.2  -0.1

df = df.set_index('col1').T.rename_axis('Variable').rename_axis(None, 1)
print (df)
             a     b
Variable            
name1     10.0  72.0
name2      0.2  -0.1

If need column from index:

df = df.set_index('col1').T.rename_axis('Variable').rename_axis(None, 1).reset_index()
print (df)
  Variable     a     b
0    name1  10.0  72.0
1    name2   0.2  -0.1
like image 145
jezrael Avatar answered Sep 23 '22 13:09

jezrael