gabboshow
gabboshow

Reputation: 5579

transpose dataframe changing columns names

Could you please help me in transforming the dataframe df

df=pd.DataFrame(data=[['a1',2,3],['b1',5,6],['c1',8,9]],columns=['A','B','C'])
df
Out[37]: 
    A  B  C
0  a1  2  3
1  b1  5  6
2  c1  8  9

in df2

df2=pd.DataFrame(data=[[2,5,8],[3,6,9]],columns=['a1','b1','c1'])
df2
Out[36]: 
   a1  b1  c1
0   2   5   8
1   3   6   9

The first column should become the column names and then I should transpose the elements...is there a pythonic way?

Upvotes: 1

Views: 1722

Answers (2)

jezrael
jezrael

Reputation: 863751

For general solution use set_index with transpose:

df1 = df.set_index('A').T.reset_index(drop=True).rename_axis(None)

Or remove column A, transpose and build new DataFrame by constructor:

df1 = pd.DataFrame(df.drop('A', 1).T.values, columns=df['A'].values)
print (df1)

   a1  b1  c1
0   2   5   8
1   3   6   9

Upvotes: 1

cs95
cs95

Reputation: 403248

A little trick with slicing, initialise a new DataFrame.

pd.DataFrame(df.values.T[1:], columns=df.A.tolist())

Or,

pd.DataFrame(df.values[:, 1:].T, columns=df.A.tolist())

  a1 b1 c1
0  2  5  8
1  3  6  9

Upvotes: 2

Related Questions