使用Python的Pandas实现Case When语句
时间: 2024-02-11 19:05:49 浏览: 15
在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参数为默认值(即所有条件都不满足时的返回值)。在条件列表和结果列表中,每个元素的位置是对应的,即第一个条件对应第一个结果,第二个条件对应第二个结果,以此类推。
需要注意的是,条件列表中的每个元素都应该返回一个布尔值,表示该条件是否满足。结果列表中的每个元素可以是任何类型的值,表示该条件满足时需要返回的结果。
相关问题
使用Python的Pandas实现Case When语句。
在 Pandas 中,可以使用 numpy.where() 函数来实现类似于 SQL 中 Case When 的逻辑。具体实现方式如下:
``` python
import pandas as pd
import numpy as np
# 创建示例数据
df = pd.DataFrame({'score': [80, 90, 65, 70, 95, 85],
'passing_score': [70, 70, 70, 70, 70, 70]})
# 使用 numpy.where 实现 Case When
df['result'] = np.where(df['score'] >= df['passing_score'], 'Pass', 'Fail')
# 输出结果
print(df)
```
输出结果如下:
```
score passing_score result
0 80 70 Pass
1 90 70 Pass
2 65 70 Fail
3 70 70 Pass
4 95 70 Pass
5 85 70 Pass
```
上述代码中,我们创建了一个包含 `score` 和 `passing_score` 两列数据的 DataFrame,然后使用 `np.where` 来实现 Case When 的逻辑,当 `score` 大于等于 `passing_score` 时,结果为 `Pass`,否则为 `Fail`。最后将计算结果保存到 `result` 列中。
使用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` 操作。