将列名转换为第一个索引中的值

时间:2017-10-26 14:57:01

标签: python-2.7 pandas

我有一个如下所示的数据框格式:

       0     1     2
rev  rev1  rev2  rev3
num  num1  num2  num3

我想将列名从0 1 2更改为第一个索引中的内容并删除该索引并将索引重命名为0.所需的输出为

    rev1  rev2  rev3
0   num1  num2  rev4

我的代码就像这样

df.columns = df.loc['rev',:]            
df = df.drop('rev')
df.index = ['0']

我得到了输出

rev rev1  rev2  rev3
0   num1  num2  rev4

我的代码的问题是索引可以命名为任何内容而不是rev。如果它被命名为其他任何我的代码不起作用。另外,我不希望索引名称出现在左上角。

3 个答案:

答案 0 :(得分:3)

optllvm::PassManager一起使用,将第一行转换为dict即

.iloc

输出:

     rev1  rev2  rev3
num  num1  num2  num3

如果你想重置索引,那么df rename

答案 1 :(得分:2)

您需要将columns.name设置为None或其他值:

df.columns = df.loc['rev',:]            
df = df.drop('rev')
df.index = [0]
df.columns.name = None
df = df.rename_axis(None, axis=1)

或仅使用DataFrame构造函数:

df = pd.DataFrame([df.loc['num'].values], columns=df.loc['rev'].values)
print (df)
   rev1  rev2  rev3
0  num1  num2  num3
df = pd.DataFrame(df.loc['num'].values.reshape(-1, len(df.columns)), 
                  columns=df.loc['rev'].values)
print (df)
   rev1  rev2  rev3
0  num1  num2  num3

答案 2 :(得分:2)

使用T

df.T.set_index('rev').T
Out[521]: 
rev  rev1  rev2  rev3
num  num1  num2  num3

df.reset_index(drop=True).T.set_index(0).T.rename_axis(None,axis=1)
Out[527]: 
   rev1  rev2  rev3
1  num1  num2  num3