内容简介: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),第一时间获的最新更新:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Essential PHP Security
Chris Shiflett / O'Reilly Media / 2005-10-13 / USD 29.95
Being highly flexible in building dynamic, database-driven web applications makes the PHP programming language one of the most popular web development tools in use today. It also works beautifully wit......一起来看看 《Essential PHP Security》 这本书的介绍吧!
图片转BASE64编码
在线图片转Base64编码工具
HSV CMYK 转换工具
HSV CMYK互换工具