DataFrame.filter(self, items=None, like=None, regex=None, axis=None)
根据指定索引中的标签对数据框的行或列进行子集设置。
请注意,此例程不会在其内容上过滤数据框。过滤器将应用于索引标签。
参数: | items : 类似列表(list) 保持标签中轴的位置。 like : 字符串 保持标签远离类似于 regex : 字符串(正则表达式) 保持标签远离
axis : 整数或字符串axis名称 要过滤的轴。默认情况下,这是信息轴,
, |
返回值: | 与输入对象相同的类型 |
Notes
items,like和regex参数执行相互排斥。
axis默认为使用[]
建立索引时使用的信息轴。
例子
1)按列名过滤(使用 items 参数)
import pandas as pd # 创建示例 DataFrame df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }) # 保留指定列 'A' 和 'B' filtered_df = df.filter(items=['A', 'B'], axis=1) print(filtered_df)
2)按列名包含的子字符串过滤(使用 like
参数)
import pandas as pd # 创建示例 DataFrame df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }) # 筛选列名中包含 'A' 的列 filtered_df = df.filter(like='A', axis=1) print(filtered_df)
3)使用正则表达式过滤列名(使用 regex
参数)
import pandas as pd # 创建示例 DataFrame df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }) # 筛选列名以 'B' 或 'C' 结尾的列 filtered_df = df.filter(regex='[BC]$', axis=1) print(filtered_df)
4)按行名过滤(axis=0
)
import pandas as pd # 创建 DataFrame 并设置索引 df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }, index=['row1', 'row2', 'row3']) # 保留指定行 'row1' 和 'row3' filtered_df = df.filter(items=['row1', 'row3'], axis=0) print(filtered_df)