1. 关于条件筛选的函数
1.1. query()
描述:使用布尔表达式查询DataFrame的列。
DataFrame.query(expr, *, inplace=False, **kwargs)
参数说明:
参数名 | 说明 |
expr | 要计算的查询字符串。 |
inplace | bool,默认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视为文字字符串。 |
返回值:布尔序列或索引。