• pandas越来越难学,只能自己找趣味了,你该这么学,No.11


    啊,大海啊,全是水

    pandas啊,全是坑
    没错,今天继续学习难的
    其实从这篇开始,每一篇都是难得......
    你必须要努力看了

    文末有彩蛋

    分层/多级索引

    我们先创建一个分层索引,看看效果

    这个创建,办法有好几个

    看一下吧
    在这里插入图片描述

    通过from_tuples创建

    import pandas as pd
    import random
    
    arrays = [['bar','bar','baz','baz','foo','foo'],
    ['one','two','one','two','one','two']]
    
    tuples = list(zip(*arrays))
    
    print(tuples)
    
    index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])
    print(index)
    
    s = pd.Series([3,1,4,1,5,9],index=index)
    
    print(s)
    

    通过调用pd.MultiIndex.from_tuples我们可以传入一个元组列表搞定

    也可以采用两个迭代中的每个元素配对

    使用MultiIndex.from_product

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

    效果是一样的哦

    在来一个比较方便的,生成一个多层索引

    直接将列表传递到Series或者DataFrame中去看看

    arrays = [['bar','bar','baz','baz','foo','foo'],
              ['one','two','one','two','one','two']]
    
    s = pd.Series([3,1,4,1,5,9],index=arrays)
    
    print(s)
    
    

    看好这个一一对应的关系就好了
    在这里插入图片描述
    用到dataframe上,也是一样的哦
    没啥区别

    在这里插入图片描述

    最新的0.24版本的pandas里面
    看,写就写最新的

    增加了一个方法
    MultiIndex.from_frame

    MultiIndex.from_frame(df, sortorder=None, names=None)

    使用起来,比较清晰

    df = pd.DataFrame([['A','nice'],['A','to'],
                      ['B','good'],['B','ye']],
                      columns=['first','second'])
    
    print(df)
    
    index = pd.MultiIndex.from_frame(df)
    print(index)
    

    注意啊,这个是0.24版本以上的pandas可以用

    小注意

    所有的MultiIndex构造函数都接收一个names参数,该参数存储index自己的名称,如果没有传递,默认值为None

    索引可以设置在pandas对象的任意轴上

    这种情况,直接抛栗子就好了

    data = [[1,2,4,5,6,7],[1,2,3,4,5,6]]
    arrays = [['bar','bar','baz','baz','foo','foo'],
              ['one','two','one','two','one','two']]
    
    tuples = list(zip(*arrays))
    
    index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])
    df = pd.DataFrame(data,index=['A','B'],columns=index)
    print(df)
    
    

    查阅结果,看到columns 列名,已经被修改成多级的
    在这里插入图片描述
    如果你要继续尝试,别着急,新的代码来了

    data = [[1,2,4,5],[1,2,3,4]]
    arrays = [['bar','bar','baz','baz','foo','foo'],
              ['one','two','one','two','one','two']]
    
    tuples = list(zip(*arrays))
    
    index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])
    df = pd.DataFrame(data,index=['A','B'],columns=index[:4])
    print(df)
    

    直接使用index切片,选择索引的数量

    好了,多层索引先写到这里啦

    明天继续,彩蛋时间

    欢迎关注公众号哦

    http://t.cn/Ai9HgtwC
    在这里插入图片描述

    今天必须要黑一个网站了

    这个网站叫做博x园

    发文章的逻辑是这样的

    发布的时候

    用户可以自己选择是否上传首页
    看好,自己选择

    然后,管理员在把“不好”的删掉

    用什么定义不好呢?这要看“权限狗们”如何看待了

    重点来了,画重点

    它不但删你的文章,还封禁你推送的功能

    一句话,你随便发,我随便封

    rubbish

    以后如果测试压力代码,全部往垃圾园扔

    个人牢骚,不接受反驳

  • 相关阅读:
    NVMe固态硬盘工具箱使用说明
    (原创)Python文件与文件系统系列(1)—— file 对象
    Linux系统排查4——网络篇
    Python内置类型——list
    (原)数据结构——线索二叉树
    Python匿名函数——lambda表达式
    Python生成器
    Python内置类型——dict
    Python内置类型——set
    解决Django-1.8.2应用部署到Apache后无法显示admin应用的CSS
  • 原文地址:https://www.cnblogs.com/happymeng/p/11078028.html
Copyright © 2020-2023  润新知