2016-10-22 54 views
1

我有兩個數據框。作爲主要數據幀的數據幀「A」有3列「數量」,「捐贈」和「Var1」。數據幀B有2列「號碼」和「位置」。 DataFrame B中的「Number」列是A中「Number」的子集。我想要做的是在DataFrame A中新建一列 - 「NEW」,它將映射列中的數字值,目前在數據幀B將增加價值爲1,否則所有其他值將爲0在不同的數據框中比較/映射不同的系列

>>>DFA 
Number donation Var1 
243  4  45 
677  56  34 
909  34  22 
565  78  24 
568  90  21 
784  33  88 
787  22  66 
>>>DFB 
Number location 
909  PB 
565  WB 
784  AU 

這是兩個dataframes,我想與DFA新列看起來是這樣的。

>>>DFA 
Number donation Var1 NEW 
243  4  45 0 
677  56  34 0 
909  34  22 1 
565  78  24 1 
568  90  21 0 
784  33  88 1 
787  22  66 0 

這有它的價值在於1,如果數量存在於DFB如果沒有它給0

回答

2

你可以使用isin法新列:

DFA['NEW'] = (DFA['Number'].isin(DFB['Number'])).astype(int) 

例如,

import pandas as pd 

DFA = pd.DataFrame({'Number': [243, 677, 909, 565, 568, 784, 787], 
        'Var1': [45, 34, 22, 24, 21, 88, 66], 
        'donation': [4, 56, 34, 78, 90, 33, 22]}) 
DFB = pd.DataFrame({'Number': [909, 565, 784], 'location': ['PB', 'WB', 'AU']}) 

DFA['NEW'] = (DFA['Number'].isin(DFB['Number'])).astype(int) 
print(DFA) 

收益率

Number Var1 donation NEW 
0  243 45   4 0 
1  677 34  56 0 
2  909 22  34 1 
3  565 24  78 1 
4  568 21  90 0 
5  784 88  33 1 
6  787 66  22 0