当前位置: 首页 > 编程笔记 >

对Pandas MultiIndex(多重索引)详解

荆树
2023-03-14
本文向大家介绍对Pandas MultiIndex(多重索引)详解,包括了对Pandas MultiIndex(多重索引)详解的使用技巧和注意事项,需要的朋友参考一下

创建多重索引

In [16]: df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)

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

first    
second  two 
A  -0.226169 
B  -1.436737 
C  -2.006747 

获得索引信息

get_level_values

In [23]: index.get_level_values(0)
Out[23]: Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')

In [24]: index.get_level_values('second')
Out[24]: Index(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'], dtype='object', name='second')

基本索引

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

使用reindex对齐数据

数据准备

In [11]: s = pd.Series(np.random.randn(8), index=arrays)

In [12]: s
Out[12]: 
bar one -0.861849
  two -2.104569
baz one -0.494929
  two 1.071804
foo one 0.721555
  two -0.706771
qux one -1.039575
  two 0.271860
dtype: float64

s序列加(0~-2)索引的值,因为s[:-2]没有最后两个的索引,所以为NaN.s[::2]意思是步长为1.

In [34]: s + s[:-2]
Out[34]: 
bar one -1.723698
  two -4.209138
baz one -0.989859
  two 2.143608
foo one 1.443110
  two -1.413542
qux one   NaN
  two   NaN
dtype: float64

In [35]: s + s[::2]
Out[35]: 
bar one -1.723698
  two   NaN
baz one -0.989859
  two   NaN
foo one 1.443110
  two   NaN
qux one -2.079150
  two   NaN
dtype: float64

以上这篇对Pandas MultiIndex(多重索引)详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 如果我定义一个像这样的分层索引数据框: 内容如下所示: 我知道如何提取与给定列对应的数据。例如。对于列: 如何提取符合以下标准集的数据: , , , column , , 列 和 、、列、以及从开始的所有列 是偶数 (顺便说一句,我做了不止一次rtfm,但我真的觉得难以理解。)

  • 问题内容: 我在MySQL数据库中有下表: SQL将如下所示: 如您所见,我同时创建了primaryId和和imgDate索引键。我的想法是,该WHERE子句使用primaryId,而ORDER子句使用来查询结果imgDate。 我的问题是,现在使用多索引会更好吗?还是我应该使用多列索引(目前我不太了解)? 这是我从EXPLAIN得到的: 注意:这不是使用多列索引,这是使用上表说明的结果。 问题答

  • 鉴于此示例: 我想得到那些索引,其中col1: 预期结果将是一个向量。

  • 本文向大家介绍MyISAM与InnoDB索引实现对比详解,包括了MyISAM与InnoDB索引实现对比详解的使用技巧和注意事项,需要的朋友参考一下 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。如图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的

  • 我有一个像这样的数据框 我正试图重新塑造它,使它看起来像这样 我从尝试开始 但取消堆叠会导致以下值错误:“索引包含重复的条目,无法重塑”所以我在So上找到了这个建议,这允许我取消堆叠 但是当我用“ID”(即df=df.unstack(“ID”)解栈时,我的结束数据帧看起来像这样 我如何压缩它以获得我想要的输出?

  • 假设我们有这样一个数据frame: 我们还有另一个具有相同行数和列数(具有相同名称)的DataFrame: 我不知道如何创建另一个由和组成的DataFrame,使其看起来像下面的DataFrame(可能有两个索引级别): 阅读基于列标签在pandas中重新塑造dataframes并从多个dict创建一个pandas DataFrame,这给了我一些见解(因为我也试图通过以下方法来实现:首先将原始d