使用Python的Pandas实现Case When语句。
时间: 2024-05-13 14:14:08 浏览: 101
在Python的Pandas中,可以使用np.select()方法来实现类似SQL中的Case When语句。下面是一个示例代码:
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({'value': [1, 2, 3, 4, 5]})
conditions = [
df['value'] < 3,
df['value'] >= 3
]
choices = [
'small',
'large'
]
df['category'] = np.select(conditions, choices, default='unknown')
print(df)
```
在上面的示例中,我们创建了一个包含`value`列的DataFrame,并根据条件`value<3`和`value>=3`分别赋值为`small`和`large`,最后将结果存储在新的`category`列中。如果条件不匹配,则使用默认值`unknown`。
相关问题
使用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参数为默认值(即所有条件都不满足时的返回值)。在条件列表和结果列表中,每个元素的位置是对应的,即第一个条件对应第一个结果,第二个条件对应第二个结果,以此类推。
需要注意的是,条件列表中的每个元素都应该返回一个布尔值,表示该条件是否满足。结果列表中的每个元素可以是任何类型的值,表示该条件满足时需要返回的结果。
pandas中case when
在pandas中,可以使用apply函数结合lambda表达式来实现类似于SQL中的case when语句的功能。以下是使用apply函数实现case when语句的步骤:
1. 首先,创建一个新的列,用于存储case when结果。
2. 使用apply函数和lambda表达式来定义一个自定义函数,该函数根据条件返回对应的结果。在lambda表达式中,可以使用if-else语句来实现条件判断,并返回相应的结果。
3. 将自定义函数应用于DataFrame的某一列,通过设置axis参数为1来逐行处理。
4. 将结果存储到新创建的列中。
下面是一个示例代码,演示如何在pandas中使用apply函数实现case when语句的功能:
```python
import pandas as pd
# 创建示例数据
chengji = [[100, 95, 100, 98], [90, 98, 0, 94], [88, 95, 98, 95], [99, 98, 97, 92], [95, 90, 96, 88], [94, 94, 93, 77]]
data = pd.DataFrame(chengji, columns=['语文', '类别', '数学', '政治'])
# 创建新列
data['数学评级'] = data.apply(lambda x: 'A' if x['数学'] >= 90 else 'B' if x['数学'] >= 80 else 'C', axis=1)
# 输出结果
print(data)
```
以上代码中,我们使用apply函数和lambda表达式创建了一个自定义函数,根据数学成绩的不同范围分别返回'A'、'B'和'C',然后将该函数应用于DataFrame的数学列,将结果存储到新创建的数学评级列中。
请注意,这只是一种示例方法,你可以根据具体的需求和条件来修改lambda表达式中的条件判断和返回结果。
阅读全文