我有两个数据框。数据框“A”是主数据框,有 3 列“Number”、“donation”和“Var1”。数据框 B 有 2 列“编号”和“位置”。 DataFrame B 中的“Number”列是 A 中“Number”的子集。我想做的是在 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 中,则值为 1;如果不存在,则值为 0。
最佳答案
您可以使用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
关于python - 比较/映射不同数据帧中的不同系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191218/