我有 2 个数据框,dfA
和dfB
,它们具有不同的形状和不同的顺序。dfA
包含在中dfB
。
此示例中有 3 列,“职位”、“部门”和“薪水”。dfA
“薪水”列中缺少值,因此我想从中获取这些值dfB
。
dfA
如果和之间的“职位名称”和“工作部门”匹配dfB
,“薪水”也相同,因此我可以使用中的“薪水”来dbB
填写dfA
。
例如,“教师”部门的每个“英语教师”的工资都是X,但“民办教师”部门的“英语教师”的工资却不同,尽管职称相同。
但是,我还没有找到执行该操作的代码。
我的思考过程是这样的,尽管我认为它完全是错误的:
condition_A = (dfA['Job Title'] == dfB['Job Title'])
condition_B = (dfA['Job Department'] == dfB['Job Department'])
dfA.loc[(condition_A) & (condition_B), 'Job Salary'] = dfB.loc[(condition_A) & (condition_B), 'Job Salary']
这次尝试显然没有成功。
dataA = {
'Job Title': ['ET', 'FT', 'ET', 'ST', 'ST'],
'Job Department': ['T', 'T', 'PT', 'T', 'PT'],
'Job Salary': [np.nan, 1500, 1000, np.nan, np.nan]
}
dfA = pd.DataFrame(dataA)
dataB = {
'Job Title': ['ST', 'ET', 'RT', 'FT', 'ST', 'PT', 'ET'],
'Job Department': ['T', 'T', 'PT', 'T', 'PT', 'T', 'PT'],
'Job Salary': [2000, 800, 1700, 1500, 2500, 700, 1000]
}
dfB = pd.DataFrame(dataB)
期望结果(dfA
缺失值填充dfB
):
dataA = {
'Job Title': ['ET', 'FT', 'ET', 'ST', 'ST'],
'Job Department': ['T', 'T', 'PT', 'T', 'PT'],
'Job Salary': [800, 1500, 1000, 2000, 2500]
}
dfA = pd.DataFrame(dataA)
提前致谢!
表格中的结果与您描述的一样,除了最后的职位薪水值之外,我认为这是您的错误,因为在给出的
dfA
和的示例中不存在职位-部门-薪水dfB
。