python - 如何使第一行变成第二级MultiIndex

标签 python pandas indexing multi-index

我有一个现有的 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

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

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

有没有一种简单的方法可以做到这一点?

期望的输出:

             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. MultiIndex第二层的来源(df.iloc[0]) 应补充 .values。否则这个 MultiIndex 级别 继承名称 (0) - 0 行的索引值。

  3. 生成的 MultiIndex 应该替换为 df.columns, 不是整个 df

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

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

关于python - 如何使第一行变成第二级MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676949/

相关文章:

python - 根据另一个数据帧中的 boolean 值设置一个数据帧中的值

mysql - MySQL 中的索引 - 101 简介?

python - 正则表达式,仅在字符串中间查找模式

pandas - 在 Pandas 中删除具有多个键的行

python - Django日期比较在服务器上不同

python - 编译器问题: AssertionError on replace( ) given T or F condition with string and column cell

python - 在条件下填充 df 的行

java - 如何创建 10 个字符长度的 Mongo ObjectId(如 Parse Server)

python - 不寻常的排列

python - 使用 SSHTunnelForwarder 通过 SSH 连接到 MySQL 数据库