pandas filter函数用法详解
时间: 2023-05-27 10:01:27 浏览: 152
Pandas是用于数据处理和数据分析的Python库。其中,`filter`函数是用于筛选数据的常用函数之一。它允许按照指定条件从数据集中筛选特定的行或列。以下是filter函数的用法详解。
## 语法
`filter`函数的语法如下:
```
DataFrame.filter(items=None, like=None, regex=None, axis=None)
```
`filter`函数有四个参数:
- items: 指定要筛选的列,可以传递列名的列表或元组。
- like: 通过传递包含特定字符串的字符串,筛选列名。
- regex: 通过传递正则表达式,筛选列名。
- axis: 指定沿着哪个轴筛选。0表示按行筛选,1表示按列筛选。默认值为0。
## 示例
假设我们有以下的数据:
```
import pandas as pd
data = {'name': ['Bobby', 'Alice', 'Cathy', 'Donald', 'Eric', 'Fred'],
'sex': ['M', 'F', 'F', 'M', 'M', 'M'],
'age': [22, 23, 25, 27, 31, 33],
'salary': [2000, 2500, 3000, 3500, 4000, 4500]}
df = pd.DataFrame(data)
```
| name | sex | age | salary |
|------|-----|-----|--------|
| Bobby| M | 22 | 2000 |
| Alice| F | 23 | 2500 |
| Cathy| F | 25 | 3000 |
| Donald| M | 27 | 3500 |
| Eric| M | 31 | 4000 |
| Fred| M | 33 | 4500 |
现在,我们尝试使用`filter`函数从数据集中筛选特定的行或列。
### 筛选行
我们可以使用`filter`函数,按行筛选数据。
例1. 筛选名字包含'A'的行:
```
df.filter(like='A', axis=0)
```
输出:
| name | sex | age | salary |
|------|-----|-----|--------|
| Alice| F | 23 | 2500 |
例2. 筛选年龄大于30的行:
```
df.filter(items=['age', 'salary'], axis=1)[df['age']>30]
```
输出:
| age | salary |
|-----|--------|
| 31 | 4000 |
| 33 | 4500 |
### 筛选列
我们还可以使用`filter`函数,按列筛选数据。
例1. 筛选名字和工资列:
```
df.filter(['name', 'salary'])
```
输出:
| name | salary |
|------|--------|
| Bobby|2000 |
| Alice|2500 |
| Cathy|3000 |
| Donald|3500 |
| Eric |4000 |
| Fred |4500 |
例2. 通过正则表达式筛选名字和工资列:
```
df.filter(regex='.*a.*')
```
输出:
| name | salary |
|------|--------|
| Bobby|2000 |
| Cathy|3000 |
以上是使用`filter`函数进行数据筛选的常见用法。使用`filter`函数可以方便地对数据集进行列选择或行选择,提高数据处理效率。
阅读全文