博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python: 对于DataFrame.loc传入列表和传入元组输出区别的理解
阅读量:5339 次
发布时间:2019-06-15

本文共 1014 字,大约阅读时间需要 3 分钟。

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. 带有一个参数的可调用函数,返回可以用索引的结果。

转载于:https://www.cnblogs.com/hufulinblog/p/9897286.html

你可能感兴趣的文章
C#增删改查
查看>>
ajax--百度百科
查看>>
Spring的xml文件配置方式实现AOP
查看>>
清理网站缓存的几种方法
查看>>
js 使用json.js处理json对象
查看>>
UML类图
查看>>
php基础随记
查看>>
WWF(1)
查看>>
2016蓝桥杯决赛 机器人塔(会超时)
查看>>
vue中过滤器filter的使用
查看>>
vue中v-show与v-if的区别
查看>>
time模块
查看>>
已知树的前序中序求后序,或者已知树的中序后序求前序(1)
查看>>
构建之法 阅读笔记06
查看>>
vhdl rising_edge(clk) (clk'event and clk='1')的区别
查看>>
LoadRunner补丁Patch4下载
查看>>
七 Hibernate5种查询检索方式,单表&多表
查看>>
【tyvj1305】最大子序和
查看>>
面试总结一
查看>>
Logging模块的简单使用 Python
查看>>