我想根据职位名称(及其匹配状态)是否存在于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/

10-13 05:37