我想根据职位名称(及其匹配状态)是否存在于dfB中向dfA添加一列。
dfA =
Title State Income
Cashier WY 15000
Cashier WY 20000
Cashier WY 15000
Manager WY 25000
Cashier CO 15000
dfB =
Title State MostFreqIncome
Cashier WY 15000
用英语:如果dfA中的“标题/状态”对与dfB中的任何“标题/状态”对匹配,请在dfA中创建一个新列,该列提供附加到该“标题/状态”对的MostFreqIncome。
所需的dfA:
Title State Income MostFreqIncome
Cashier WY 15000 15000
Cashier WY 20000 15000
Cashier WY 15000 15000
Manager WY 25000 NA
Cashier CO 15000 NA
这是我到目前为止的内容:
is_in = dfA.Title.isin(dfB.Title) & dfA.State.isin(dfB.State)
这给了我False / True,但是如果它是True,我想要dfA.MostFreqIncome = dfB.MostFreqIncome。如果为假,我要dfA.MostFreqIncome ='NA'
最佳答案
您可以merge
两个数据框A和B创建新的数据框:
>>> dfA.merge(dfB, on=['Title', 'State'], how='left')
Title State Income MostFreqIncome
0 Cashier WY 15000 15000.0
1 Cashier WY 20000 15000.0
2 Cashier WY 15000 15000.0
3 Manager WY 25000 NaN
4 Cashier CO 15000 NaN
在这里指定
how='left'
意味着在合并的DataFrame中我们只是dfA
的Title / State键。关于python - 根据值是否存在于另一个DataFrame列中在Pandas DataFrame中创建列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41003463/