转置数据框更改列名称

时间:2018-01-26 11:34:44

标签: python pandas 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
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

第一列应该成为列名 然后我应该转换元素...是否有pythonic方式?

2 个答案:

答案 0 :(得分:2)

切片的一个小技巧,初始化一个新的DataFrame

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

或者,

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

  a1 b1 c1
0  2  5  8
1  3  6  9

答案 1 :(得分:1)

对于一般解决方案,请使用set_index转置:

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

或删除列A,按构造函数转置并构建新的DataFrame

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