第一次在这里张贴海报.我很难理解.loc
是如何工作的,而DataFrame
的分数是MultiIndex
.更具体地说,我感兴趣的是这样一种情况,即我有一个2级MultiIndex
,并且我想通过第二级的标签 Select 值.
例如,使用loc
的文档中定义的DataFrame
:
tuples = [
('cobra', 'mark i'), ('cobra', 'mark ii'),
('sidewinder', 'mark i'), ('sidewinder', 'mark ii'),
('viper', 'mark ii'), ('viper', 'mark iii')
]
index = pd.MultiIndex.from_tuples(tuples)
values = [[12, 2], [0, 4], [10, 20],
[1, 4], [7, 1], [16, 36]]
df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index)
df
--------------------------------------
max_speed shield
cobra mark i 12 2
mark ii 0 4
sidewinder mark i 10 20
mark ii 1 4
viper mark ii 7 1
mark iii 16 36
我想 Select 与mark ii
对应的值,而不考虑第一级标签.我可以使用xs
:
df.xs("mark ii", level=1)
-----------------------------
max_speed shield
cobra 0 4
sidewinder 1 4
viper 7 1
我想我可以用loc
:
df.loc[:, "mark ii"]
-------------------
KeyError: 'mark ii'
然而,如果我这样做,我会得到预期的结果:
df.loc[:, "mark ii", :] # <-- note the added semicolon after 'mark ii'
-----------------------------
max_speed shield
cobra 0 4
sidewinder 1 4
viper 7 1
有人能解释一下为什么df.loc[:, "mark ii"]
不能在这里工作吗?