【发布时间】:2022-11-18 10:55:28
【问题描述】:
我有一个包含 60 列的数据框;为了说明起见,我将展示一个示例数据框,它看起来像我拥有的但要短得多。示例数据框如下所示:
0 1 ... 0 1 ...
0 -0.611064 -0.032586 ... -0.102049 1.582183 ...
我想要的是在现有列的顶部添加另一层列,这样它就变成了这样:
A B
0 1 ... 0 1 ...
0 -0.611064 -0.032586 ... -0.102049 1.582183 ...
我尝试了以下方法:
df.columns = pd.MultiIndex.from_product([['A','B'], df.columns])
但我收到一条错误消息
ValueError: Length mismatch: Expected axis has 60 elements, new values have 120 elements
经过一番搜索后,我知道错误是由于我尝试分配的列数大于现有列,但我仍然无法解决这个问题。
我还尝试了几种方法,如 pd.MultiIndex.from_tuples 和 pd.MultiIndex.from_arrays,但产生了其他错误。
编辑:
这是一个可重现的例子
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(1,4), columns=[0,1,0,1])
df.columns = pd.MultiIndex.from_product([['A','B'], df.columns])
print(df)
任何人都可以指出解决这个问题的方法吗? 提前致谢。
【问题讨论】:
-
请编辑您的问题以包含 minimal reproducible example 以显示您的输入数据帧样本和预期输出,以便我们重新创建您的示例。
-
嗨@Paul,我编辑了帖子,请看一下。谢谢!
-
我相信@AlexK 已经为您提供了解决方案
标签: python dataframe multi-index