📜  pandas 中的 case 语句 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.023000             🧑  作者: Mango

Pandas 中的 Case 语句 - Python

在 Pandas 中,可以使用 numpyselect 方法来模拟 SQL 中的 case 语句。下面是一个详细示例:

首先,我们需要导入 Pandas 和 numpy:

import pandas as pd
import numpy as np

然后,我们创建一个包含一些数据的 Pandas 数据框:

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'age': [25, 32, 18, 47, 22],
    'gender': ['Female', 'Male', 'Male', 'Male', 'Female'],
    'profession': ['Student', 'Teacher', 'Engineer', 'Doctor', 'Student'],
    'salary': [55000, 75000, 82000, 120000, 50000],
    'country': ['US', 'UK', 'CA', 'UK', 'US']
})

现在我们可以使用 numpy.select 方法来创建一个新的列,包含符合我们条件的值。例如,我们可以根据不同的职业来创建新列 salary_level, 用来表示具有不同水平的工资:

conditions = [
    (df['profession'] == 'Student'),
    (df['profession'] == 'Teacher'),
    (df['profession'] == 'Engineer'),
    (df['profession'] == 'Doctor')
]

choices = [
    'Low',
    'Medium',
    'High',
    'VeryHigh'
]

df['salary_level'] = np.select(conditions, choices, default='Unknown')

这里我们定义了一个条件列表 conditions,包含四个不同的条件,分别代表四个职业。同时,我们定义了一个选择列表 choices,其中包含四个不同的选择,分别代表相应职业的水平。根据这些条件和选择,我们可以使用 np.select 方法创建一个新列 salary_level

最后,我们可以检查输出数据框是否创建了新的列:

print(df.head())

输出如下:

       name  age  gender profession  salary country salary_level
0     Alice   25  Female    Student   55000      US          Low
1       Bob   32    Male    Teacher   75000      UK       Medium
2   Charlie   18    Male   Engineer   82000      CA         High
3     David   47    Male     Doctor  120000      UK     VeryHigh
4       Eva   22  Female    Student   50000      US          Low

我们可以看到,新的列 salary_level 成功创建了,并且符合我们的条件。

因此,Pandas 中可以使用 numpyselect 方法来模拟 SQL 中的 case 语句,这在数据分析时非常有用。