【发布时间】:2021-10-28 07:16:20
【问题描述】:
我目前正在从事一个数据科学项目。想法是从“glassdoor_jobs.csv”中清理数据,并以更易于理解的方式呈现。
import pandas as pd
df = pd.read_csv('glassdoor_jobs.csv')
#salary parsing
#Removing "-1" Ratings
#Clean up "Founded"
#state field
#Parse out job description
df['hourly'] = df['Salary Estimate'].apply(lambda x: 1 if 'per hour' in x.lower() else 0)
df['employer_provided'] = df['Salary Estimate'].apply(lambda x: 1 if 'employer provided salary' in x.lower() else 0)
df = df[df['Salary Estimate'] != '-1']
Salary = df['Salary Estimate'].apply(lambda x: x.split('(')[0])
minus_Kd = Salary.apply(lambda x: x.replace('K', '').replace('$',''))
minus_hr = minus_Kd.apply(lambda x: x.lower().replace('per hour', '').replace('employer provided salary:', ''))
df['min_salary'] = minus_hr.apply(lambda x: int(x.split('-')[0]))
df['max_salary'] = minus_hr.apply(lambda x: int(x.split('-')[1]))
我在最后一行收到错误。经过一番挖掘,我在 minus_hr 中发现,一些“Salary Estimate”只有一个数字而不是范围:
| index | Salary Estimate |
|---|---|
| 0 | 150 |
| 1 | 58 |
| 2 | 130 |
| 3 | 125-150 |
| 4 | 110-140 |
| 5 | 200 |
| 6 | 67- 77 |
等等。现在我想弄清楚如何解决“列表索引超出范围”的问题,并使 max_salary 与只有一个值的单元格的 min_salary 相同。
我也在尝试获取最低和最高工资之间的平均值,如果单元格只有一个值,则将该值设为平均值
所以最后,像索引 0 这样的东西看起来像:
| index | min | max | average |
|---|---|---|---|
| 0 | 150 | 150 | 150 |
【问题讨论】:
标签: python pandas dataframe spyder