我有一个现有的 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 提出的解决方案需要一些修正:
df.columns
和df.iloc[0]
应该在一起第一个from_arrays
的参数,而不是两个单独的参数。MultiIndex第二层的来源(df.iloc[0]) 应补充 .values。否则这个 MultiIndex 级别 继承名称 (0) - 0 行的索引值。
生成的 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/