首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas MultiIndex :获取特定级别和iloc的值

pandas MultiIndex :获取特定级别和iloc的值
EN

Stack Overflow用户
提问于 2020-05-04 15:14:46
回答 2查看 211关注 0票数 1

我正在寻找等同于DataFrameMultiIndexat

我目前的实现使用:

代码语言:javascript
复制
mi = df.columns # This is a multi-index
mi.get_level_values(level_name)[i]

我担心这对性能不好。是否有其他值可用于读取索引i处的特定level

示例:

代码语言:javascript
复制
mi = pd.MultiIndex.from_product([[1,2,3], [4,5,6]], names=['i', 'j'])
df = pd.DataFrame({'x': range(9)}, index=mi)

df

     x
i j
1 4  0
  5  1
  6  2
2 4  3
  5  4
  6  5
3 4  6
  5  7
  6  8

df.index.get_level_values('j')[3]
4

有没有什么短期的df.index.get_level_values('j')[3]替代方案?

EN

回答 2

Stack Overflow用户

发布于 2020-05-04 15:26:42

如果我没理解错的话,我猜你可以把你的DataFrame子集。类似于:

代码语言:javascript
复制
df.loc['level'] # In case there is more than one level: df.loc[('level1': 'level2')]

这将为您提供行(或多行),并从那里您可以再次垂直子集。同时在两个方向上设置子集将类似于:

代码语言:javascript
复制
df.loc['your_desired_column', 'level1': 'level2']

如果您有多个索引,则基于外部索引和内部索引的sintax to子集是不同的。

Outser:使用字符串内部:使用元组

如下所示:

代码语言:javascript
复制
df.loc['level1':'level2'] # Outer
df.loc[('outer1', 'inner1'):('outer2', 'inner2')] # Outer & Inner

我希望这对你有帮助!

票数 1
EN

Stack Overflow用户

发布于 2020-05-04 19:35:29

查看pandas提供的Basic indexing on axis with MultiIndex文档。

下面是一些示例:

代码语言:javascript
复制
In [18]: df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)

In [19]: df
Out[19]: 
first        bar                 baz                 foo                 qux          
second       one       two       one       two       one       two       one       two
A       0.895717  0.805244 -1.206412  2.565646  1.431256  1.340309 -1.170299 -0.226169
B       0.410835  0.813850  0.132003 -0.827317 -0.076467 -1.187678  1.130127 -1.436737
C      -1.413681  1.607920  1.024180  0.569605  0.875906 -2.211372  0.974466 -2.006747

In [25]: df['bar']
Out[25]: 
second       one       two
A       0.895717  0.805244
B       0.410835  0.813850
C      -1.413681  1.607920

In [26]: df['bar', 'one']
Out[26]: 
A    0.895717
B    0.410835
C   -1.413681
Name: (bar, one), dtype: float64

In [27]: df['bar']['one']
Out[27]: 
A    0.895717
B    0.410835
C   -1.413681
Name: one, dtype: float64

In [28]: s['qux']
Out[28]: 
one   -1.039575
two    0.271860
dtype: float64
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61586927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档