(2)自定义函数,将salary列数据(岗位薪资范围)的最大值和最小值的平均值作为该生的薪资水平,生成新的df1;(涉及split函数、lambda函数、map函数、apply函数)
时间: 2023-06-25 17:05:32 浏览: 230
可以使用以下代码实现:
```python
import pandas as pd
# 读取原始数据
df = pd.read_csv("data.csv")
# 定义自定义函数,计算薪资水平
def calculate_salary_level(row):
salary_range = row["salary"]
# 将岗位薪资范围拆分为最大值和最小值
salary_list = salary_range.split("-")
min_salary = int(salary_list[0])
max_salary = int(salary_list[1].replace("k", "")) * 1000
# 计算薪资水平
salary_level = (min_salary + max_salary) / 2
return salary_level
# 使用apply函数应用自定义函数,生成新的df1
df1 = df.copy()
df1["salary_level"] = df1.apply(lambda row: calculate_salary_level(row), axis=1)
print(df1.head())
```
解释一下代码:
首先使用`pandas`库的`read_csv`函数读取原始数据,存储在`df`变量中。
然后定义了一个叫做`calculate_salary_level`的函数,这个函数接受一个`pandas`中的`Series`类型的数据,代表一行数据,函数的作用是将该行数据的岗位薪资范围拆分为最大值和最小值,并计算它们的平均值作为薪资水平。
使用`apply`函数将自定义函数应用于每一行数据,在新的列`salary_level`中存储计算出来的薪资水平。
最后使用`print`函数打印出新的数据框`df1`的前几行,以检查生成结果是否正确。
阅读全文