• Python: 对于DataFrame.loc传入列表和传入元组输出区别的理解


    def test():
        import pandas as pd
        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)
        print(df)
        all = slice(None)
        print(df.loc[[all, "mark i"], :])
        print(df.loc[(all, "mark i"), :])

    上面代码中,传入列表[all, "mark i"]和传入元组(all, "mark i")的结果不一致。

    其中,
    df.loc中传入列表,相当于列表中的每一个元素都需要对df进行索引切片。第一个元素是all,这个all相当于匹配任何索引,所以所有的数据都打印出来了。
    传入元组,则相当与只使用元组执行一次切片。all相当于匹配索引的外层所有索引,“mark i"相当于匹配内层值为mark i的索引,最后打印的数据只有两个。

    DataFrame.loc API
    DataFrame.loc是纯粹基于标签的标签索引选择器。
    loc[]主要是基于标签的,但也可以与布尔数组一起使用。
    支持的传参格式:
    1. 一个单一的标签。比如5、‘g’.注意这里的5解释为索引中的一个标签,而不是沿着索引的整数位置。
    2. 标签构成的列表和数组。[‘a’, 'b', 'c']
    3. 标签组成的切片对象,比如 ‘a’: 'f' 。含头且含尾。
    4. 传入布尔数组
    5. 带有一个参数的可调用函数,返回可以用索引的结果。

  • 相关阅读:
    vim的一些基本配置
    做菜好吃的小技巧02
    SQLServer创建用户登录
    Python库整理
    centos7开机界面出现多个选项
    Elasticsearch和MongoDB简要对比
    OLTP与OLAP
    CentOS7命令总结
    windows下快速删除命令
    Idea配置热部署
  • 原文地址:https://www.cnblogs.com/hufulinblog/p/9897286.html
Copyright © 2020-2023  润新知