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

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

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)

运行效果如下图所示:

目录
相关文章
|
1月前
【全网最简短代码】筛选出新数组中和旧数组的重复项,并和旧数组合并(往数组追加新的数据对象且去重,合并两个数组不重复数据)
【全网最简短代码】筛选出新数组中和旧数组的重复项,并和旧数组合并(往数组追加新的数据对象且去重,合并两个数组不重复数据)
|
9月前
第6章 利用数组处理批量数据
第6章 利用数组处理批量数据
51 0
|
7月前
|
小程序 JavaScript
小程序循环列表删除当前选中列表的方法
小程序循环列表删除当前选中列表的方法
82 0
|
7月前
|
JavaScript Python
从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
从列表中或数组中随机抽取固定数量的元素组成新的数组或列表
42 0
|
JSON 数据格式 Python
一日一技:包含非hashable元素的列表如何去重并保持顺序?
一日一技:包含非hashable元素的列表如何去重并保持顺序?
89 0
|
开发者 Python
列表的修改查询和删除|学习笔记
快速学习列表的修改查询和删除
93 0
列表的修改查询和删除|学习笔记
|
JavaScript 前端开发 API
|
移动开发 Python
批量查找文本中的内容
@echo off findstr /ims "查找内容" *.*>list.txtps:把含有相关文字内容的文档输出到list.txt文本中,适用于能用notepad打开的各种文档.   是一个修改升级的版本,原程序是这个《批量查找替换文本文件内容》。
1031 0
通过切片来修改列表
通过切片来修改列表,插入/删除/修改元素
224 0