#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть два фрейма данных. Фрейм данных «A», который является основным фреймом данных, имеет 3 столбца «Номер», «пожертвование» и «Var1». Фрейм данных B содержит 2 столбца «Номер» и «местоположение». Столбец «Number» в фрейме данных B является подмножеством «Number» в A. Что я хотел бы сделать, так это сформировать новый столбец в фрейме данных 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
Это два фрейма данных, я хочу, чтобы 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.
Ответ №1:
Вы могли бы использовать 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