比较/映射不同数据帧中的不同系列

时间:2016-10-22 10:45:58

标签: python pandas dataframe

我有两个数据框。 Dataframe" A"这是主要的数据框有3列"数字","捐赠"和" Var1" 。数据帧B有2列"数字"和"位置"。 "数字" DataFrame B中的列是" Number"的一个子集。在A.我想做的是在DataFrame A中形成一个新专栏 - " NEW"这将映射列中的数字值,如果它在DataFrame 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

这两个数据帧,我希望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

这有一个新列,如果DFB中存在Number,则其值为1,如果不存在,则为0。

1 个答案:

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