一日一技:从列表中一次性筛选多个指定位置的数据

简介: 一日一技:从列表中一次性筛选多个指定位置的数据

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(),其使用方法如下:
1. from itertools import compress
2. 
3. name_list = ['kingname', 'alice', 'bob', 'cindy']
4. position_list = [True, False, True, False]
5. 
6. for name in compress(name_list, position_list):
7.     print(name)

运行效果如下图所示:

目录
相关文章
|
网络协议 Linux C语言
linux下CC++网络编程基本:socket实现tcp和udp的例子
linux下CC++网络编程基本:socket实现tcp和udp的例子
402 0
|
数据库 数据安全/隐私保护
手把手教你搞定菜单权限设计,精确到按钮级别,建议收藏(一)
在实际的项目开发过程中,菜单权限功能可以说是后端管理系统中必不可少的一个环节,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、角色、菜单进行相应的扩展。
5065 0
手把手教你搞定菜单权限设计,精确到按钮级别,建议收藏(一)
|
JavaScript 前端开发 Dart
JavaScript高级笔记-coderwhy版本(三)
JavaScript高级笔记-coderwhy版本
199 0
JavaScript高级笔记-coderwhy版本(三)
|
数据可视化 Python
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
743 0
|
消息中间件 监控 API
深入浅出微服务架构设计原则
在软件开发的宇宙中,微服务如星辰般璀璨,引领着分布式系统的航向。本文将带你穿梭于微服务的星系,探索其背后的设计哲学与实践精髓,从服务边界的划分到数据一致性的保障,再到服务的通信与协作,我们将一同揭开微服务架构高效、可扩展且灵活的秘密。
177 4
|
机器学习/深度学习 存储 人工智能
Java在人工智能(AI)领域具有多方面的优势
【4月更文挑战第13天】Java在人工智能(AI)领域具有多方面的优势
609 8
|
JSON 数据格式 Python
flask 接收get请求, 以及返回 json格式
flask 接收get请求, 以及返回 json格式
226 0
|
存储 安全 Linux
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
320 0
|
存储 网络协议 安全
《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark
【2月更文挑战第1天】《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark
540 3