1 回答
TA贡献1895条经验 获得超3个赞
首先,我们创建一个 DataFrame(带有 MultiIndex),就像您的示例中的那样:
import numpy as np
import pandas as pd
data = np.arange(11 * 8).reshape((11, 8))
midx = pd.MultiIndex.from_tuples(
[
('2020-01-01', 'A', 'C1', 'D1'),
('2020-01-01', 'A', 'C1', 'D2'),
('2020-01-01', 'A', 'C2', 'D3'),
('2020-01-01', 'A', 'C2', 'D4'),
('2020-01-01', 'B', 'C3', 'D5'),
('2020-01-01', 'B', 'C3', 'D6'),
('2020-01-01', 'B', 'C4', 'D7'),
('2020-01-01', 'B', 'C4', 'D8'),
],
names=('y', 'a', 'b', 'c',)
)
df = pd.DataFrame(data=data, columns=midx)
df
现在,我们使用有点麻烦的“索引切片”来提取感兴趣的列。这里有一些例子:
# get the 'A' columns
df.loc[:, (slice(None), 'A')]
# get the 'C1' column
df.loc[:, (slice(None), slice(None), 'C1')]
# get the D1 and D5 columns
df.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])]
y 2020-01-01
a A B
b C1 C3
c D1 D5
0 0 4
1 8 12
2 16 20
3 24 28
4 32 36
5 40 44
6 48 52
7 56 60
8 64 68
9 72 76
10 80 84
这是执行最后一个操作后的 MultiIndex:
df.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])].columns
MultiIndex([('2020-01-01', 'A', 'C1', 'D1'),
('2020-01-01', 'B', 'C3', 'D5')],
names=['y', 'a', 'b', 'c'])
添加回答
举报