pandas实现多条件的case when功能
时间: 2024-01-03 12:16:24 浏览: 48
在pandas中,可以使用numpy.select()函数来实现多条件的case when功能。该函数接受三个参数,第一个参数是包含多个条件的列表,第二个参数是对应条件的目标值列表,第三个参数是条件未满足时的默认值。通过使用numpy.select(),可以根据不同的条件对数据进行分类和转换。
例如,假设我们有一个名为df的DataFrame,其中有一个名为col1的列,我们想要根据不同的条件对col1进行分类和转换,可以按照以下方式使用numpy.select()函数:
```python
import pandas as pd
import numpy as np
conditions = [
df['col1'] > 10,
df['col1'] < 5,
(df['col1'] >= 5) & (df['col1'] <= 10)
]
choices = ['high', 'low', 'medium']
df['col2'] = np.select(conditions, choices, default='unknown')
```
上述代码中,我们定义了三个条件,分别对应于大于10、小于5和5到10之间的情况。然后,我们定义了三个目标值,分别为'high'、'low'和'medium'。最后,我们使用np.select()函数将结果存储在新的列col2中。
相关问题
使用pandas实现case when操作
在 pandas 中,我们可以使用 `numpy` 中的 `where` 函数来实现类似于 SQL 中的 `case when` 操作。
假设我们有一个数据框 `df`,其中有一列 `score`,我们想根据 `score` 列的值创建一个新的列 `grade`,满足以下条件:
- 当 `score` 大于等于 90 时,`grade` 为 A
- 当 `score` 大于等于 80 且小于 90 时,`grade` 为 B
- 当 `score` 大于等于 70 且小于 80 时,`grade` 为 C
- 否则 `grade` 为 D
代码如下:
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({'score': [85, 92, 78, 65, 50]})
df['grade'] = np.where(df['score'] >= 90, 'A',
np.where(df['score'] >= 80, 'B',
np.where(df['score'] >= 70, 'C', 'D')))
print(df)
```
输出结果如下:
```
score grade
0 85 B
1 92 A
2 78 C
3 65 D
4 50 D
```
在上述代码中,我们使用了三个嵌套的 `np.where` 函数来实现类似于 SQL 中的 `case when` 操作。
使用Python的Pandas实现Case When语句
在Pandas中,可以使用np.select()函数来实现类似于SQL中的Case When语句。具体实现步骤如下:
1. 导入必要的库
```python
import pandas as pd
import numpy as np
```
2. 定义条件和结果
```python
conditions = [
df['column1'] > 0,
df['column2'] == 'value1',
df['column3'].isin(['value2', 'value3'])
]
results = [
'positive',
'match',
'in_list'
]
```
3. 使用np.select()函数进行条件判断
```python
df['new_column'] = np.select(conditions, results, default='other')
```
以上代码将会在df中新增一个名为"new_column"的列,根据条件判断结果赋予相应的值。
其中,第一个参数为条件列表,第二个参数为结果列表,default参数为默认值(即所有条件都不满足时的返回值)。在条件列表和结果列表中,每个元素的位置是对应的,即第一个条件对应第一个结果,第二个条件对应第二个结果,以此类推。
需要注意的是,条件列表中的每个元素都应该返回一个布尔值,表示该条件是否满足。结果列表中的每个元素可以是任何类型的值,表示该条件满足时需要返回的结果。