精华内容
下载资源
问答
  • 多重列表索引
    千次阅读
    2020-09-22 07:05:27

    python3 的index函数只能索引要查找元素的首个索引,这个在多数情况是不能满足索引要求的。而enumerate函数可以遍历所有元素,可以利用这个函数+列表推导式实现获取所有重复元素的索引值。实现方式如下:

    listA=[1,2,3,2]  #比如要查找列表中的数字2。

    indexA=[x for (x,y) in enumerate(listA) if y==m ]

    indexA

    输出:[1,4]

    可以写成函数以方便调用:

    def indexA (listA,m):

        return [x for (x,y) in enumerate(listA) if y==m ]

    使用:

    indexA([1,2,3,4,3,2,2] ,2)

    输出:[1, 5, 6]

    indexA([1,2,3,4,3,2,2],3)

    输出:[2, 4]

    更多相关内容
  • 分层/多级索引是非常令人兴奋的,因为它为一些相当复杂的数据分析和操作打开了大门,特别是对于处理高维数据。实际上,它使您能够在较低维的数据结构...一、创建多重索引(分层索引)对象 多索引对象是标准索引对象的

    分层/多级索引是非常令人兴奋的,因为它为一些相当复杂的数据分析和操作打开了大门,特别是对于处理高维数据。实际上,它使您能够在较低维的数据结构(如Series (1d)和DataFrame (2d))中存储和操作具有任意维数的数据。
    在本节中,我们将展示“分层”索引的确切含义,以及它如何与上面和前面几节中描述的所有panda索引功能集成。稍后,在讨论对数据进行分组、旋转和重塑时,我们将展示一些重要的应用程序,以说明它如何帮助结构化数据以便进行分析。

    一、创建多重索引(分层索引)对象

    多索引对象是标准索引对象的层次模拟对象,标准索引对象通常在pandas对象中存储axis标签。您可以将MultiIndex看作元组数组,其中每个元组都是唯一的。可以从数组列表(使用MultiIndex.from_arrays())、元组数组(使用MultiIndex.from_tuples())、交叉迭代集(使用MultiIndex.from_product())或DataFrame(使用MultiIndex.from_frame())创建多索引。当向索引构造函数传递一组元组时,它将尝试返回一个多索引。下面的示例演示了初始化多索引的不同方法。

    import pandas as pd
    import numpy as np
    
    arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],\
      ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
      
    tuples = list(zip(*arrays))
    tuples
    '''
    [('bar', 'one'),
     ('bar', 'two'),
     ('baz', 'one'),
     ('baz', 'two'),
     ('foo', 'one'),
     ('foo', 'two'),
     ('qux', 'one'),
     ('qux', 'two')]
     '''
     index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
     '''
     MultiIndex([('bar', 'one'),
                ('bar', 'two'),
                ('baz', 'one'),
                ('baz', 'two'),
                ('foo', 'one'),
                ('foo', 'two'),
                ('qux', 'one'),
                ('qux', 'two')],
               names=['first', 'second'])
    '''
    s = pd.Series(np.random.randn(8), index=index)
    s
    '''
    first  second
    bar    one       0.606254
           two      -1.193545
    baz    one       1.226008
           two       0.486978
    foo    one       1.469800
           two       0.338351
    qux    one      -0.892168
           two      -0.650476
    dtype: float64
    '''
    

    当你想要两个迭代中的每一对元素时,使用MultiIndex.from_product()方法会更容易:
    这种貌似是最简单的哇,记住pd.MultiIndex.from_product

    iterables = [['bar', 'baz', 'foo', 'qux'], ['one', 'two']]
    pd.MultiIndex.from_product(iterables, names=['first', 'second'])
    '''
    MultiIndex([('bar', 'one'),
                ('bar', 'two'),
                ('baz', 'one'),
                ('baz', 'two'),
                ('foo', 'one'),
                ('foo', 'two'),
                ('qux', 'one'),
                ('qux', 'two')],
               names=['first', 'second'])
    '''
    

    您还可以使用MultiIndex.from_frame()方法直接从一个DataFrame构造一个多索引。这是MultiIndex.to_frame()的补充方法。
    *作者感觉这种是最麻烦的,不过挺检验对多维数组的掌握,建议手打一下 *

    df = pd.DataFrame([['bar', 'one'], ['bar', 'two'],['baz', 'one'],['baz', 'two'], ['foo', 'one'], ['foo', 'two'], ['qux', 'one'],['qux', 'two']], columns=['first', 'second'])
    pd.MultiIndex.from_frame(df)
    '''
    MultiIndex([('bar', 'one'),
                ('bar', 'two'),
                ('baz', 'one'),
                ('baz', 'two'),
                ('foo', 'one'),
                ('foo', 'two'),
                ('qux', 'one'),
                ('qux', 'two')],
               names=['first', 'second'])
    '''
    

    为了方便,你可以直接将数组列表传递到Series或DataFrame来自动构造一个多索引:

    arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
    		  np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
    arrays
    '''
    [array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
           dtype='<U3'),
     array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'],
           dtype='<U3')]
    '''
    s = pd.Series(np.random.randn(8), index=arrays) # 创建耽搁Series试试
    s
    '''
    bar  one    0.042885
         two    1.075552
    baz  one   -0.437966
         two    0.624236
    foo  one    0.101495
         two    0.639600
    qux  one   -0.260703
         two   -0.881295
    dtype: float64
    '''
    
    df = pd.DataFrame(np.random.randn(8,4), index=arrays)
    df
    '''
                    0         1         2         3
    bar one -0.424972  0.567020  0.276232 -1.087401
        two -0.673690  0.113648 -1.478427  0.524988
    baz one  0.404705  0.577046 -1.715002 -1.039268
        two -0.370647 -1.157892 -1.344312  0.844885
    foo one  1.075770 -0.109050  1.643563 -1.469388
        two  0.357021 -0.674600 -1.776904 -0.968914
    qux one -1.294524  0.413738  0.276662 -0.472035
        two -0.013960 -0.362543 -0.006154 -0.923061
    '''
    
    

    所有的多索引构造函数都接受一个names参数,该参数存储级别本身的字符串名称。如果没有提供姓名,则不会分配:

    df.index.names
    '''
    FrozenList([None, None])
    '''
    

    这个索引可以返回pandas对象的任何轴,索引的级别由您决定:

    df = pd.DataFrame(np.random.randn(3,8),index=['A', 'B', 'C'], coolums=index)
    df
    '''
    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
    
    '''
    df = pd.DataFrame(np.random.randn(6,6), index=index[:6], columns=index[:6])
    df
    '''
    first              bar                 baz                 foo          
    second             one       two       one       two       one       two
    first second                                                            
    bar   one    -0.410001 -0.078638  0.545952 -1.219217 -1.226825  0.769804
          two    -1.281247 -0.727707 -0.121306 -0.097883  0.695775  0.341734
    baz   one     0.959726 -1.110336 -0.619976  0.149748 -0.732339  0.687738
          two     0.176444  0.403310 -0.154951  0.301624 -2.179861 -1.369849
    foo   one    -0.954208  1.462696 -1.743161 -0.826591 -0.345352  1.314232
          two     0.690579  0.995761  2.396780  0.014871  3.357427 -0.317441
    '''
    

    我们已经“分散”了更高级别的索引,以使控制台输出对你来说更容易一些。注意索引的显示方式可以通过pandas.set_options()中的multi_sparse选项来控制:
    元组是标签的必备之选

    pd.Series(np.random.randn(8), index=tuples)
    '''
    (bar, one)    0.146193
    (bar, two)    0.011110
    (baz, one)    0.698768
    (baz, two)    0.277018
    (foo, one)   -0.014839
    (foo, two)   -0.348363
    (qux, one)    0.680304
    (qux, two)    0.299718
    dtype: float64
    '''
    
    

    多索引很重要的原因是,它允许您执行分组、选择和重塑操作,我们将在下面和文档的后续部分中描述这些操作。正如您将在后面几节中看到的,您会发现自己使用分层索引的数据,而无需自己显式地创建多索引。但是,当从文件加载数据时,您可能希望在准备数据集时生成自己的多索引。

    #########################################################
    写在最后:
    自己和朋友成立了一个工作室——图灵数据科学工作室(VX:DataUpward)
    一是想和大家交个朋友
    二是想帮助朋友们跳过我们遇到的坑,尽快找到解决办法。

    ======================================================
    工作室的运行也需要付出各种成本,“活下去”是我们的当务之急,如果大家有 :

    • 数据分析(报告);
    • 商业数据调研;
    • 数据可视化展示;
    • 数据爬虫;
    • -数据模型开发;
    • 机器学习算法挖掘

    • 也欢迎和我们工作室开展合作~
      在这里插入图片描述
    展开全文
  • 我们平时使用到的多重索引,但是网上很少有人介绍如果获取多重索引本身的值,这部分的内容比上一节更加实用 获取多重索引的标签值 get_level_values()方法将返回一个特定级别上每个位置的标签向量: iterables = [['...

    我们平时使用到的多重索引,但是网上很少有人介绍如果获取多重索引本身的值,这部分的内容比上一节更加实用

    获取多重索引的标签值

    get_level_values()方法将返回一个特定级别上每个位置的标签向量:

    iterables = [['bar', 'baz', 'foo', 'qux'], ['one', 'two']]
    arrays = pd.MultiIndex.from_product(iterables, names=['first', 'second'])
    arrays
    '''
    MultiIndex([('bar', 'one'),
                ('bar', 'two'),
                ('baz', 'one'),
                ('baz', 'two'),
                ('foo', 'one'),
                ('foo', 'two'),
                ('qux', 'one'),
                ('qux', 'two')],
               names=['first', 'second'])
    '''
    
    df = pd.DataFrame(np.random.randn(7,7), index=arrays[:7], columns=arrays[:7])
    df
    

    在这里插入图片描述

    查看行|列的所有索引

    在这里插入图片描述

    获取行|列索引

    在这里插入图片描述

    获取特定的行|列索引

    在这里插入图片描述

    对索引进行转换类型

    在这里插入图片描述

    我当时全网找了好久,才在官网上发现了这些技巧,总结了一下,希望对你有帮助。

    #########################################################
    写在最后:
    自己和朋友成立了一个工作室——图灵数据科学工作室(VX:DataUpward)
    一是想和大家交个朋友
    二是想帮助朋友们跳过我们遇到的坑,尽快找到解决办法。

    ======================================================
    工作室的运行也需要付出各种成本,“活下去”是我们的当务之急,如果大家有 :

    • 数据分析(报告);
    • 商业数据调研;
    • 数据可视化展示;
    • 数据爬虫;
    • -数据模型开发;
    • 机器学习算法挖掘

    • 也欢迎和我们工作室开展合作~
      在这里插入图片描述
    展开全文
  • Pandas多重索引使用详解

    千次阅读 2020-12-31 07:14:53
    多重索引被定义为非常重要的索引, 因为它处理数据分析和处理, 尤其是处理高维数据时。它还可以在Series和DataFrame等较低维度的数据结构中存储和处理任意数量的维度的数据。它是标准索引对象的层次结构类似物, 用于...

    多重索引被定义为非常重要的索引, 因为它处理数据分析和处理, 尤其是处理高维数据时。它还可以在Series和DataFrame等较低维度的数据结构中存储和处理任意数量的维度的数据。

    它是标准索引对象的层次结构类似物, 用于将轴标签存储在pandas对象中。也可以将其定义为元组数组, 其中每个元组都是唯一的。可以从数组列表, 元组数组和可迭代的交叉集创建。

    例:

    arrays = [['it', 'it', 'of', 'of', 'for', 'for', 'then', 'then'], ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]

    tuples = list(zip(*arrays))

    tuples

    输出

    [('it', 'one'), ('it', 'two'), ('of', 'one'), ('of', 'two'), ('for', 'one'), ('for', 'two'), ('then', 'one'), ('then', 'two')]

    范例2:

    arrays = [['it', 'it', 'of', 'of', 'for', 'for', 'then', 'then'], ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]

    tuples = list(zip(*arrays))

    index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

    输出

    MultiIndex([('bar', 'one'), [('it', 'one'), ('it', 'two'), ('of', 'one'), ('of', 'two'), ('for', 'one'), ('for', 'two'), ('then', 'one'), ('then', 'two')]

    names=['first', 'second'])

    范例3:

    import pandas as pd

    import numpy as np

    pd.MultiIndex(levels=[[np.nan, None, pd.NaT, 128, 2]], codes=[[0, -1, 1, 2, 3, 4]])

    输出

    MultiIndex(levels=[[nan, None, NaT, 128, 2]], codes=[[0, -1, 1, 2, 3, 4]])

    展开全文
  • pandas进阶内容,多重索引的创建、修改、使用
  • 目标:学会多层索引的创建学会多层索引的取值学会多层索引的排序一、多层索引的创建1、给Series创建索引① ⽅式⼀:直接使⽤index参数创建 在使⽤index参数时,index的值是⼀个列表,其中的元素是多个列表,每个列表...
  • Python多重索引:IndexSlice的用法

    千次阅读 2021-06-17 23:06:59
    笔者最近学习< Machine Learning for Algorithmic Trading >的时候遇到了如下代码,不太了解其中意思,经过学习领悟些许,写此篇以...经了解,IndexSlice适用于多重索引情况下的切片操作,接下来举例说明,例子参
  • 以上这篇python 返回列表中某个值的索引方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python获取元素在数组中索引号的方法Python打印输出数组中...
  • 其中在介绍loc,iloc函数时提到了多重索引。下面主要举例子来说明如何通过多重索引对DataFrame进行切片。注: 在进行多重索引进行操作之前必须对索引进行排序。slice的中文意义为切成片。在Python中slice函数的参数...
  • 创建多重索引In [16]: df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)In [17]: dfOut[17]:first bar baz foo qux \second one two one two one two oneA 0.895717...
  • DataFrame多重索引

    千次阅读 2019-09-03 23:19:36
    DataFrame多重索引,分组计算
  • 分层索引的一个重要特性是...关于如何获取索引本身的值见文章:**pandas 难以置信的多重索引2——获取多重索引的值(史上最全) 假设你首先创建好了一个多重索引,如果还不会创建的同学,看完**pandas 难以置信的多重
  • 再提取每组的第一个值 In [63]: df.sort_values(by="BBB").groupby("AAA", as_index=False).first() Out[63]: AAA BBB 0 1 1 1 2 1 2 3 2 这里需注意,虽然提取的结果是一样的,但两者索引不同 多重索引 很多...
  • 关注我的微信公众号:小争哥,获取更多、更新的技术、非技术分享。 作者:前Google工程师,5万人订阅《数据结构...我在专栏里面,有讲到,链表经常和散列表在一块使用,还讲到Redis中的有序集合,是通过散列表和跳表...
  • 将盛有数组的列表转换成多重索引 import pandas as pd arrays = [[1,2,3],[4,5,6]] df1=pd.DataFrame(np.random.randint(0,150,size=(3,5)),index=pd.MultiIndex.from_arrays(arrays)) print(df1)
  • 主要介绍了JS检索下拉列表框中被选项目的索引号(selectedIndex),本文通过实例代码图文详解的形式给大家介绍的非常详细,需要的朋友可以参考下
  • pandas.DataFrame 索引

    2020-12-20 23:05:53
    pandas.DataFrame 索引df.loc / df:选择行与列df:选择列df.loc:选择行df.iloc:按整数位置选择行布尔型索引多重索引 df.loc / df:选择行与列 df:选择列 默认一般用于选择列,但也可以选择行 import numpy ...
  • numpy多维数组索引

    千次阅读 2022-03-25 14:41:07
    文章目录切片索引一维二维三维四维布尔索引一维 切片索引 python的numpy中的多维数组,有时候需要定位到数组中的某些区域元素的位置。 一维 一维数组很简单,我们可以直接指定索引,或者使用切片索引。 比如: data[0...
  • @[TOC]列表渲染与多重列表嵌套渲染 列表渲染 我们用 v-for 循环语句来进行一组数组的列表渲染。v-for 指令需要以 item in list 形式的特殊语法,list 是源数据数组并且 item 是数组元素迭代的别名。接下来就介绍 v-...
  • 在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序
  • 但实际上,当数据高于二维时,我们一般用包含多层级索引的Dataframe进行表示,而不是使用Panel。原因是使用多层级索引展示数据更加直观,操作数据更加灵活,并且可以表示3维,4维乃至任意维度的数据。一,...
  • from collections import Counter print(Counter([1,2,2,2,2,3,3,3,4,4,4,4])) #Counter({2: 4, 4: 4, 3: 3, 1: 1})
  • 数据库索引是为了增加查询速度而对表字段附加的一种标识。见过很多人机械的理解索引的概念,认为增加索引只有好处没有坏处。
  • 无聊统计了下列表去重到底有多少种方法。下面小编给大家总结一下,具体内容详情如下;开发中对数组、列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后面两种...
  • pandas将dataframe的索引转换为列表list数据(convert dataframe index intto a list)
  • DataFrame多层索引创建

    2022-07-05 17:14:49
    用pandas方法给DataFrame创建多级索引
  • 多层索引的创建 2. 多层索引的取值 3. 多层索引的排序 ```python 1. 多层索引的创建 Series 多层索引的创建 ![在这里插入图片描述]...
  • #少儿编程#前面我们已经介绍过列表的增删改、排序等一些常规操作。查找列表数据也是一个相当常见的需求,所以Python通过提供内置的for循环可以非常方便地做到这一点。比如小朋友们之前做过的一个练习,依次列出列表...
  • 2022/3/6 4.7 pandas 的索引处理 4.7 pandas的索引处理 In [ ]: # 引入相关模块 import numpy as np # pandas和numpy 常常结合在一起使用,导入numpy库 import pandas as pd # 导入pandas库 print (pd.__version__) ...
  • 在创建数据的时候加入一个index列表,这个index列表里面是多个索引列表 Series多层索引的创建方法 import pandas as pd s = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'], ['期中'...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,063
精华内容 13,625
关键字:

多重列表索引