根据值是否存在于其他DataFrame列中,在pandas DataFrame中创建列

时间:2016-12-06 19:38:52

标签: python pandas dataframe

我想根据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'

1 个答案:

答案 0 :(得分:2)

您可以merge两个DataFrame A和B来创建新的DataFrame:

>>> 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的标题/状态键。