📅  最后修改于: 2023-12-03 15:33:24.023000             🧑  作者: Mango
在 Pandas 中,可以使用 numpy
的 select
方法来模拟 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 中可以使用 numpy
的 select
方法来模拟 SQL
中的 case
语句,这在数据分析时非常有用。