首页 > 其他分享 >数据筛选4(query/eval/filter/where/mask)

数据筛选4(query/eval/filter/where/mask)

时间:2023-02-16 17:33:38浏览次数:31  
标签:None name df mask filter query 80 where

#query函数

a = {"name":["lemon","jack","peter","Emma","james"],
     "city":["长沙","上海","深圳","北京","北京"],
     "a":[80,90,60,73,89],
     "b":[80,75,80,85,83],
     "c":[70,75,80,73,62]}
df = pd.DataFrame(data=a,index=["d","e","f","g","h"])

a = df.query('name == "lemon"') #里面是一个字符串类型,列名称又没有双引号

#对于数字类型的进行判断
a = df.query('a == 80')
a = df.query('a > b')
a = df.query('a > b')#选取a列大于b列的数据行

#在query函数中,支持通过变量进行筛选

my_name = "lemon"
a = df.query("name == @my_name")

#对于字符串,支持从列表中筛选出多个值
a = df.query('name == ["lemon","peter"]')

#对于多个条件的判断
a = df.query("a>80 & b<90") #两者都需要满足的
a = df.query("a>80 and b<90") #与楼上一致

a = df.query("a>80 | b<90") #两者满足一个即可的
a = df.query("a>80 or b<90") #与楼上一致

#对于列名称中有特殊符号或者空格时,需要通过反引号将列名包裹起来
df_1 = df.rename(columns={"name":"use name"})
a = df_1.query('`use name` == "lemon"')

print(a)


#eval函数

#eval函数
#eval函数与query类似

#对于条件判断eval返回的是布尔型
e = df.eval("a>b")

"""
d    False
e     True
f    False
g    False
h     True
dtype: bool
"""

#对于加减乘除会返回一个Seris
e = df.eval("a+b")

e = df.eval("e = a+b")#返回的结果为一个新的数据框,新增一列e,e的值为a+b,但是此时数据框df是没有发生变化的
e = df.eval("e = a+b",inplace = True)#inplace改变原有数据框

#此外eval还支持同时设置多个数学计算表达式
e = df.eval("""e = a+b
f = a+c""")#注意书写格式!

#同手也支持通过变量来使用表达式
k = 10
e = df.eval("d = a + @k") #添加符号@  


#filter函数,索引名称筛选
#参数解释
filter(
        self: NDFrameT,
        items=None,#索引名称中是否包含设定的内容	
        like: str | None = None, #用来模糊指定索引名称中是否包含设定的内容	
        regex: str | None = None,#运用正则表达式来模糊指定索引名称中是否包含设定的内容	
        axis=None,
    
    
    fl = df.filter(items=["e","g"],axis=0)#筛选行索引中含有字母“e”或“g”的行
"""
   name city   a   b   c
e  jack   上海  90  75  75
g  Emma   北京  73  85  73
"""
# fl = df.filter(items=["e","g"])#在不设置axis时,返回的是一个只有行索引的数据框,
fl = df.filter( like = "e")#列索引中包含字母“e”的所有列,可以不用设置默认值
fl = df.filter( like = "e",axis=0)#列索引中包含字母“e”的所有的行,

#通过正则表达式可以更加灵活的进行筛选
fl = df.filter( regex = "e",axis=0)
fl = df.filter( regex = "^n",axis=1)

print(fl)
    
    
#where函数
 #参数解释
    here(  # type: ignore[override]
        self,
        cond,#条件设置参数
        other=lib.no_default,#替代值得设置,默认为NA
        inplace: bool = False,#是否在原数据框上进行修改
        axis: Axis | None = None,
        level: Level = None,#多重索引,可以设置索引的层级
        errors: IgnoreRaise | lib.NoDefault = "raise",
        try_cast: bool | lib.NoDefault = lib.no_default,
    )
    
  #对于series
    s.where(s>75,other=0)#针对series筛选出s值大于75的,不符合的用0代替
    
    a = {"name":["lemon","jack","peter","Emma","james"],
     "city":["长沙","上海","深圳","北京","北京"],
     "a":[80,90,60,73,89],
     "b":[80,75,80,85,83],
     "c":[70,75,80,73,62]}
df = pd.DataFrame(data=a,index=["d","e","f","g","h"])

df3 = df[["a","b","c"]]
m = df3 % 2 == 0
a = df3.where(m,-df3)#判断df3中的数是否为偶数,如果不满足便取负数

#也可以只对数据框中的某列进行操作
m1 = df3["a"] > 80
a = df3.where(m1)#a列大于80的行保留其余的全用NaN值替代
print(a)
    
    
#mask函数
#mask的操作与where函数类似,不同的是mask是将符合条件的数据进行替代

标签:None,name,df,mask,filter,query,80,where
From: https://www.cnblogs.com/yangzilaing/p/17127539.html

相关文章

  • 基础-Linux的netfilter和iptables
    iptables是什么?你为啥要学?Linux的网络控制模块在内核中,叫做netfilter。而iptables是位于用户空间的一个命令行工具,它作用在OIS7层网络模型中的第四层,用来和内核的netfilte......
  • metamask 所有官方版最新版下载,chrome浏览器插件, 区块链以太坊eth钱包安装使用教程
    在区块链技术日益发展的今天,数字货币的使用也越来越广泛。作为数字货币的一种存储和交易方式,钱包在数字货币领域也扮演着重要的角色。在这其中,MetaMask是一种功能强大的钱......
  • SpringBoot注册Servlet、Filter和Listener的方式和原理
    1实战在SpringBoot项目中,如果使用内嵌Web服务器,可以很方便地注册Servlet、Filter和Listener等组件。总的来说,包括以下方式:创建实现ServletContextInitializer接口的b......
  • py_bloomfilter.py
    importmmh3importredisimportmathimporttimeclassPyBloomFilter():#内置100个随机种子SEEDS=[543,460,171,876,796,607,650,81,837,545,......
  • .Net6对AOP的多种支持之IAsyncActionFilter
    环境:  .Net6  windows10  Web项目 ps:Log4net写入到文件以及写入到数据库中开发工具:Vs2022IAsyncActionFilter(日志异步实现) IAsynctionFilter概念......
  • CVE-2023-0669 GoAnywhereMFT反序列化漏洞复现
    免责声明文中提到的所有技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途,否则产生的一切后果自行承担,与本文作者无关!GoAnywhereMFTGoAnywher......
  • Filter-案例-过滤敏感词汇-分析Filter案例-过滤敏感词汇-代码实现
    Filter-案例-过滤敏感词汇-分析需求:1.对day17_case案例录入的数据进行敏感词汇过滤2.敏感词汇参考《敏感词汇.txt》3.如果是敏感词汇,替换为**  分......
  • Filter-案例-登录验证-分析Filter-登录验证-代码实现
    Filter-案例-登录验证-分析需求:1.访问day17_case案例的资源。验证其是否登录2.如果登录了,则直接放行。3.如果没有登录,则跳转到登录页面,提示"您尚未登录,请......
  • Filter的是实现方式
    1、实现Filter接口或者继承Filter接口的实现类,使用@Component或者@Configuration注解注册到Spring​中importorg.springframework.stereotype.Component;importjavax.ser......
  • Filter概述、Filter快速入门
    Filter概述生活中的过滤器:净水器,空气净化器web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能过滤器的作用:一般用于完成通用的操作:登录验......