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)