gpt4 book ai didi

python - 如何根据字符串包含条件用值填充列

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:01 24 4
gpt4 key购买 nike

我有以下数据:

data = {
'employee' : ['Emp1', 'Emp2', 'Emp3', 'Emp4', 'Emp5'],
'code' : ['2018_1', '2018_3', '2019_1', '2019_2', '2017_1'],
}

old_salary_bonus = 3000

new_salary_bonus = {
'2019_1': 1000,
'2019_2': 980,
}

df = pd.DataFrame(data)

任务:根据以下条件添加 df['salary_bonus'] 列:如果员工的代码包含'2019',则使用代码值从new_salary_bonus 中检索工资奖金值,否则使用old_salary_bonus 值。

预期输出:

   employee  code     salary_bonus
0 Emp1 2018_1 3000
1 Emp2 2018_3 3000
2 Emp3 2019_1 1000
3 Emp4 2019_2 980
4 Emp5 2017_1 3000

请帮忙。

最佳答案

使用Series.mapSeries.fillna替换不匹配的值:

import pandas as pd

data = {
'employee' : ['Emp1', 'Emp2', 'Emp3', 'Emp4', 'Emp5'],
'code' : ['2018_1', '2018_3', '2019_1', '2019_2', '2017_1'],
}

old_salary_bonus = 3000

new_salary_bonus = {
'2019_1': 1000,
'2019_2': 980,
}

df = pd.DataFrame(data)

df['salary_bonus'] = df['code'].map(new_salary_bonus).fillna(old_salary_bonus)
print (df)
employee code salary_bonus
0 Emp1 2018_1 3000.0
1 Emp2 2018_3 3000.0
2 Emp3 2019_1 1000.0
3 Emp4 2019_2 980.0
4 Emp5 2017_1 3000.0

如果不匹配则使用默认值的 get 的另一种解决方案:

df['salary_bonus'] = df['code'].map(lambda x: new_salary_bonus.get(x, old_salary_bonus))

关于python - 如何根据字符串包含条件用值填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55742925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com