pandas统一工资单位(金额与单位是一列)
时间: 2024-02-25 16:58:25 浏览: 256
可以使用 Pandas 中的 apply 函数和正则表达式来实现统一工资单位。
首先,假设工资金额和单位是存储在一个名为 `salary` 的 Series 中的字符串。我们可以使用正则表达式来提取金额和单位:
``` python
import pandas as pd
import re
df = pd.DataFrame({'salary': ['20000元/月', '3000美元/月', '5000英镑/月']})
def extract_salary(s):
m = re.match(r'(\d+\.?\d*)\s*([a-zA-Z]+)', s)
if m:
return m.groups()
else:
return None
df['amount'], df['currency'] = zip(*df['salary'].apply(extract_salary))
```
这里的 `extract_salary` 函数使用正则表达式来提取金额和单位,返回一个包含两个元素的元组。然后,我们使用 `apply` 函数将这个函数应用到 `salary` 列的每个元素上,并使用 `zip` 函数将结果拆分成两个 Series,分别存储在 `amount` 和 `currency` 列中。
接下来,我们可以将所有工资转换为同一种货币单位,例如美元。假设我们想要将所有工资转换为美元,可以使用一个字典来存储每种货币单位对美元的汇率。然后,我们使用 `apply` 函数将每个工资转换为美元:
``` python
exchange_rates = {'元': 0.15, '美元': 1, '英镑': 1.39}
df['salary_usd'] = df.apply(lambda row: float(row['amount']) * exchange_rates[row['currency']], axis=1)
```
这里的 `exchange_rates` 字典存储了每种货币单位对美元的汇率。然后,我们使用 `apply` 函数将一个 lambda 函数应用到每一行,将工资转换为美元,并将结果存储在一个新的 `salary_usd` 列中。
最终的结果如下:
```
salary amount currency salary_usd
0 20000元/月 20000 元 3000.0
1 3000美元/月 3000 美元 3000.0
2 5000英镑/月 5000 英镑 6950.0
```
阅读全文