【发布时间】:2020-07-24 12:13:36
【问题描述】:
我可以创建一个 df,然后将其修改为具有两级列索引,如下所示:
import pandas as pd
import numpy as np
idx = pd.MultiIndex.from_product([['bar', 'baz', 'foo', 'qux'], ['one', 'two', 'three']])
df = pd.DataFrame(np.random.randn(12, 6), index=idx, columns=['C', 'D', 'E', 'F', 'G', 'H'])
print(df, '\n')
df.columns = pd.MultiIndex.from_product([['A'], df.columns])
print(df.head(3))
我明白了:
A
C D E F G H
bar one -0.370228 1.246188 0.673553 0.116890 0.129511 0.126562
two -1.059752 -0.357985 -0.189913 1.080814 0.588176 0.212053
three -0.345277 -1.227097 0.915477 1.475285 -1.342885 0.149785
但我想要的是这样的:
A B
C D E F G H
bar one -0.370228 1.246188 0.673553 0.116890 0.129511 0.126562
two -1.059752 -0.357985 -0.189913 1.080814 0.588176 0.212053
three -0.345277 -1.227097 0.915477 1.475285 -1.342885 0.149785
这样我的列被访问为:AC、AD、AE、BF、BG、BH
我已经尝试过这个(以及其他一些东西):
df.columns = pd.MultiIndex.from_product([[['A'], df[['C', 'D', 'E']]], [['B'], df[['F', 'G', 'H']]]])
但我不断收到此错误:
TypeError: unhashable type: 'list'
如何以我想要的方式创建多索引?
【问题讨论】:
标签: python-3.x pandas multi-index