2016-12-06 4 views
1

dfBに職名(およびその一致する状態)が存在するかどうかに基づいて、dfAに列を追加します。値が別のDataFrame列に存在するかどうかに基づいて、pandas DataFrameに列を作成します。

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) 

これは私の真/偽を与えるが、それは本当だ場合、私はdfA.MostFreqIncome = dfB.MostFreqIncomeをしたいです。それは私がdfA.MostFreqIncome =「NA」

+0

あなたは 'pd.merge(dfA、dfB)'を試しましたか? – Psidom

答えて

2

をしたい偽だ場合は、新しいデータフレームを作成するために、2つのデータフレームAとBをmergeすることができます:ここhow='left'を指定

>>> 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 

は「私たちはただ唯一dfAしていることを意味し■マージされたDataFrame内のタイトル/状態キー。

+0

これは動作します、ありがとうございます。 1つの質問 - 私は文字列として収入を保つことができる方法はありますか?これは数字に変換されました。 (私はMemoryErrorを元に戻しています)。使用している実際の変数は数字のように見えますが、ID番号です。 –

+0

これは奇妙なことですが、「収入」列のタイプはマージによって全く影響を受けません。どのバージョンのパンダを使用していますか? –

+0

それは数値であった元のデータセットでした; マージによって10進数が追加されました。私は元の文字列を変更した後、それは大丈夫だった。 ありがとうございます。 –

関連する問題