使用特定行的值作为列名

Use values of specific rows as columns names

我有多个数据框,如下所示:

        0  1  2  3  4  5
Groupe  1  2  3  4  5  6
1       3  6  8  6  8  9
2       5  5  2  1  1   0.1
3       7  2  8  1.9 11 2.1
4       1  2  1  1.1  2  1

所以列名是 [0, 1, 2, 3, 4, 5] 但我想把 Groupe 行的值作为列名,因为它在上下文中很有趣我分析数据。 备注: Groupe 行的值可能会改变,因此它不一定是 1、2、3。因此解决方案不能简单到将 +1 添加到实际值列名。

上面给出的数据帧的期望输出是:

       1  2  3  4  5  6
1       3  6  8  6  8  9
2       5  5  2  1  1   0.1
3       7  2  8  1.9 11 2.1
4       1  2  1  1.1  2  1

那么如何更改某行值的列名称?

如果行 Groupedf 的第一行,您可以先根据 iloc, then convert it to int by astype 选择的第一行设置列名,删除列名,最后删除 DataFrame 的第一行[1:]:

df.columns = df.iloc[0,:].astype(int)
df.columns.name= None
print (df[1:])
   1  2  3    4   5    6
1  3  6  8  6.0   8  9.0
2  5  5  2  1.0   1  0.1
3  7  2  8  1.9  11  2.1
4  1  2  1  1.1   2  1.0

loc and drop 的另一种解决方案,df 中的第 Groupe 行可以在任何地方,而不仅仅是第一个:

df.columns = df.loc['Groupe',:].astype(int)
df.columns.name= None
df = df.drop('Groupe')
print (df)
   1  2  3    4   5    6
1  3  6  8  6.0   8  9.0
2  5  5  2  1.0   1  0.1
3  7  2  8  1.9  11  2.1
4  1  2  1  1.1   2  1.0