pandas将/月,/日,/周,k的薪资数据转换为月薪
时间: 2023-08-16 21:08:07 浏览: 145
详解PANDAS 数据合并与重塑(join/merge篇)
在 pandas 中,可以使用 `apply()` 方法结合自定义函数来处理不同格式的薪资数据,并将其转换为月薪。以下是一个示例代码:
``` python
import pandas as pd
# 定义一个自定义函数,将不同格式的薪资数据转换为月薪
def salary_to_monthly(salary_str):
if '/' in salary_str:
# 如果薪资数据中包含 /,则需要判断是月薪、日薪还是周薪
parts = salary_str.split('/')
value = float(parts[0])
if parts[1] == '月':
return value
elif parts[1] == '日':
return value * 240
elif parts[1] == '周':
return value * 48
elif 'k' in salary_str:
# 如果薪资数据中包含 k,则需要将其转换为数字
value = float(salary_str.replace('k', '')) * 1000
return value / 12
else:
# 其他情况,直接将薪资数据转换为数字
return float(salary_str)
# 创建一个示例数据框
data = {'name': ['A', 'B', 'C'], 'salary': ['10k/月', '300/日', '5/周']}
df = pd.DataFrame(data)
# 将薪资数据转换为月薪数据
df['salary'] = df['salary'].apply(salary_to_monthly)
print(df)
```
该代码将数据框 `df` 中的薪资数据转换为月薪数据,结果如下:
```
name salary
0 A 833.333333
1 B 720.000000
2 C 10.000000
```
在自定义函数中,根据薪资数据的格式进行不同的转换操作。如果薪资数据中包含 `/`,则需要根据后缀判断是月薪、日薪还是周薪,并进行相应的转换;如果薪资数据中包含 `k`,则需要将其转换为数字,再将年薪数据转换为月薪数据;如果薪资数据中不包含 `/` 和 `k`,则直接将薪资数据转换为数字。应用自定义函数时,可以直接使用 `apply()` 方法,并将其作为参数传递给数据框的一列。
阅读全文