内容简介:Pandas的DataFrame在筛选列数据的时候,有一个非常方便的用法。假设现在有这样一个DataFrame:运行效果如下图所示:
Pandas的DataFrame在筛选列数据的时候,有一个非常方便的用法。
假设现在有这样一个DataFrame:
import pandas as pd data = [ {'name': 'kingname', 'age': 20, 'salary': 99999}, {'name': 'alice', 'age': 30, 'salary': 99999}, {'name': 'bob', 'age': 10, 'salary': 99999}, {'name': 'cindy', 'age': 40, 'salary': 99999} ] df = pd.DataFrame(data) df 复制代码
运行效果如下图所示:
我要筛选所有 age >= 30
的数据,可以这样写:
df[df['age'] >= 30] 复制代码
运行效果如下图所示:
而这里面的原理,实际上可以使用下面这个代码来解释:
df[[False, True, False, True]] 复制代码
如下图所示:
那么问题来了,我有一个 Python 里面,列表能不能也实现这个功能呢?假设有下面两个列表:
name_list = ['kingname', 'alice', 'bob', 'cindy'] position_list = [True, False, True, False] 复制代码
我想把 position_list
列表中, True
的下标在 name_list
中对应的值都获取下来。
你可能会这样写代码:
name_list = ['kingname', 'alice', 'bob', 'cindy'] position_list = [True, False, True, False] for name, position in zip(name_list, position_list): if position: print(name) 复制代码
运行效果如下图所示:
但实际上,在Python里面有一个现成的函数可以实现这个功能,那就是 itertools.compress()
,其使用方法如下:
from itertools import compress name_list = ['kingname', 'alice', 'bob', 'cindy'] position_list = [True, False, True, False] for name in compress(name_list, position_list): print(name) 复制代码
运行效果如下图所示:
如果这篇文章对你有帮助,请关注我的微信公众号: 未闻Code(ID: itskingname),第一时间获的最新更新:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 一次性搞定 Iconfont
- 一次性能优化实战经历
- JavaScript如何一次性展示几万条数据
- 教你如何让SSH使用一次性密码登陆
- SOLO:一次性预测语义类别和实例掩码
- 31 道 Java 核心面试题,一次性打包送给你
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!