如何使第一行变成二级多索引

How to make first row turn into second level MultiIndex(如何使第一行变成二级多索引)

本文介绍了如何使第一行变成二级多索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个现有的DataFrame,如下所示:

     1   |   1   |   1   |   2   |   2   |   2   |   2
 --------------------------------------------------------
  | abc  |  def  |  ghi  |  jkl  |  mno  |  pqr  |  stu
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00

我已经尝试了一段时间,但没有成功。

重复的1和2已经是一级多重索引。 我知道如果我添加另一个级别,它们将合并在一起,但很难将第一行转换为多重索引的第二个级别。

有这样做的简单方法吗?

所需输出:

             1           |               2             
  | abc  |  def  |  ghi  |  jkl  |  mno  |  pqr  |  stu
 --------------------------------------------------------
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00

如有任何帮助,将不胜感激! 谢谢

推荐答案

Jezrael提出的解决方案需要进行一些更正:

  1. df.columnsdf.iloc[0]一起第一个 from_arrays的参数,而不是两个单独的参数。

  2. 多索引(df.iloc[0]二级来源) 应使用.Values进行补充。否则,此多索引级别 继承名称(0)-第0行的索引值。

  3. 生成的多索引应替换为df.columns, 不是全部df

所以整个解决方案应该是:

df.columns = pd.MultiIndex.from_arrays([df.columns, df.iloc[0].values])
df = df.iloc[1:]

这篇关于如何使第一行变成二级多索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使第一行变成二级多索引