Pandas —— 条件筛选

本文介绍了Pandas库中DataFrame的两种查询方法:query(),使用布尔表达式进行列筛选;以及DataFrame.eval(),用于计算对列的操作。同时,详细解释了Series.str.contains()用于检查字符串是否包含特定字符或正则表达式的功能。
摘要由CSDN通过智能技术生成

1. 关于条件筛选的函数

1.1. query()

        描述:使用布尔表达式查询DataFrame的列。

DataFrame.query(expr, *, inplace=False, **kwargs)

         参数说明:

参数名说明
expr要计算的查询字符串。
inplacebool,默认False
kwargs有关DataFrame.query()接受的关键字参数的完整详细信息,请参阅pandas.eval()的文档。

 参数expr支持的查询语句:

  • contains:'列名'.str.contains('被包含字符串', case=False),contains函数使用详情见 1.3. Series.str.contains()
  • !=、==、>、<
  • &、|

        返回值:DataFrame or None

import numpy as np
data = {
        'math': np.random.randint(60, 100, size=3),
        'age': [12, 15, 16],
        'name': ['John', 'Smith', 'Jesse']
    }

df = pd.DataFrame(data)
print(f'原始数据:\n{df}')
print(f'''过滤后的结果:\n{df.query("name != 'Jesse'")}''')
print(f'''过滤后的结果:\n{df.query("name.str.contains('h')")}''')

# 输出结果:
原始数据:
   math  age   name
0    82   12   John
1    87   15  Smith
2    91   16  Jesse
过滤后的结果:
   math  age   name
0    82   12   John
1    87   15  Smith
过滤后的结果:
   math  age   name
0    82   12   John
1    87   15  Smith

 

1.2. DataFrame.eval()

        描述:计算描述对DataFrame列的操作的字符串。

DataFrame.eval(expr, *, inplace=False, **kwargs)

        参数说明:

参数名说明
expr

str

要计算的表达式字符串。

inplace

bool, default False

如果表达式包含赋值,则决定是否就地执行操作并变异现有的DataFrame。否则,将返回一个新的DataFrame。

kwargs有关DataFrame.eval()接受的关键字参数的完整详细信息,请参阅pandas.eval()的文档。

         返回值:计算结果,如果inplace=True,则为“无”。

1.3. Series.str.contains()

        描述:根据给定的字符序列或正则表达式是否包含在序列或索引的字符串中

Series.str.contains(pat, case=True, flags=0, na=None, regex=True)

        参数说明:

参数名说明
pat字符序列或正则表达式。
case

bool,默认True。

True:区分大小写;False:不区分大小写。

flags

int, default 0 (no flags)

要传递到re模块的标志,例如re.IGNORECASE。

na

标量,可选。

为缺少的值填充值。默认值取决于数组的数据类型。对于对象dtype,使用numpy.nan。对于StringDtype,pandas。使用NA。

regex

bool,默认True

True,则假定pat是正则表达式。

False,则将pat视为文字字符串。

        返回值:布尔序列或索引。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Python中,可以使用Pandas库来筛选出数据框中符合特定条件的行。其中,可以使用query()方法来选择符合条件的行。例如,可以使用以下代码来选择"age"列中大于30的所有行: result = df.query('age > 30') 此外,还可以使用控制流语句来构建符合筛选条件的代码。以CSV文件为例,假设需要保留供应商名字为"Supplier Z"或者成本大于$600.00的行,可以使用以下代码来实现: import csv with open(input_file, 'r', newline='') as csv_in_file: with open(output_file, 'w', newline='') as csv_out_file: filereader = csv.reader(csv_in_file) filewriter = csv.writer(csv_out_file) header = next(filereader) filewriter.writerow(header) for row_list in filereader: supplier = str(row_list).strip() cost = str(row_list).strip('$').replace(',', '') if supplier == 'Supplier Z' or float(cost) > 600.0: filewriter.writerow(row_list) 通过以上方法,可以筛选符合条件的行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [筛选符合条件的数据行(Python Pandas 数据框中基于条件的行选择)](https://blog.csdn.net/m0_47037246/article/details/130374860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python数据分析基础——CSV文件——筛选特定的行](https://blog.csdn.net/weixin_52467834/article/details/113616094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值