第一次在这里张贴海报.我很难理解.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"]不能在这里工作吗?

推荐答案

您不能直接使用:来指定级别.df.loc[:, "mark ii"]表示: Select 所有行(:),列"Mark II"(不存在).

正确的方法应该是使用IndexSlice:

df.loc[pd.IndexSlice[:, "mark ii"], :]

# or slice
df.loc[(slice(None), 'mark ii'), :]

也可以以loc为单位指定轴:

df.loc(axis=0)[:, "mark ii"]

输出:

                    max_speed  shield
cobra      mark ii          0       4
sidewinder mark ii          1       4
viper      mark ii          7       1

Python相关问答推荐

为什么Pydantic在我申报邮箱时说邮箱丢失

日程优化问题不知道更好的方式来呈现解决方案- Python / Gekko

定义同侪组并计算同侪组分析

socket.gaierror:[Errno -2]名称或服务未知|Firebase x Raspberry Pi

如何将我的位置与光强度数据匹配到折射图案曲线中?

基本链合同的地址是如何计算的?

使用多个性能指标执行循环特征消除

Pandas :多索引组

如何将双框框列中的成对变成两个新列

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

如何在虚拟Python环境中运行Python程序?

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

Python,Fitting into a System of Equations

有没有一种方法可以从python的pussompy比较结果中提取文本?

如何从pandas的rame类继承并使用filepath实例化

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

多指标不同顺序串联大Pandas 模型

dask无groupby(ddf. agg([min,max])?''''

* 动态地 * 修饰Python中的递归函数

ConversationalRetrivalChain引发键错误