Pandas每日函数学习之filter函数(pandas groupby filter)
filter函数提供了一种便捷的方法来过滤数据框(DataFrame)的轴(行或列),根据指定的条件对轴标签进行筛选。filter 函数提供了一种灵活的方式来根据标签的名称筛选行或列,但它不会对数据框的内容进行过滤。如果你需要基于数据框的内容进行过滤,应该使用布尔索引或 query 方法。
基本语法
DataFrame.filter(items=None, like=None, regex=None, axis=None)
items: 用于选择的标签列表。只有在轴标签完全匹配 items 中的元素时,才会被选中。
like: 一个字符串,用于筛选包含这个字符串的轴标签。
regex: 使用正则表达式来筛选轴标签。
axis: 指定要过滤的轴。默认为列(axis=0 或 axis='columns')。如果要过滤行,可以设置为 axis=1 或 axis='index'。
示例
假设我们有以下 DataFrame
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': range(10, 15),
'C': range(20, 25),
'D': range(30, 35)
})
使用 items 参数,如果你想选择列 'A' 和 'C':
filtered = df.filter(items=['A', 'C'])
print(filtered)
使用 like 参数,如果你想选择包含字母 'B' 的列:
filtered = df.filter(like='B')
print(filtered)
使用 regex 参数,如果你想选择以字母 'C' 或 'D' 开头的列:
filtered = df.filter(regex='^(C|D)')
print(filtered)
指定 axis 参数
如果你的 DataFrame 的行标签包含特定的字符串或符合某个正则表达式,你也可以使用 filter 函数来筛选行。例如,假设 DataFrame 的索引(行标签)如下。
df.index = ['item1', 'item2', 'item3', 'item4', 'item5']
如果你想筛选出索引包含 'item3' 的行:
filtered = df.filter(like='item3', axis=0)
print(filtered)