Установить значение в отдельном столбце панд при отображении словаря - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть словарь:

d = {"A":1, "B":2, "C":3}

У меня также есть фрейм данных pandas:

col1
A
G
E
B
C

Я хочу создать новый столбец, сопоставив словарь с col1,Одновременно я хотел бы установить значения в другом столбце, чтобы указать, было ли сопоставлено значение в этой строке.Желаемый результат будет выглядеть следующим образом:

col1    col2    col3
A       1       1
G       NaN     0
E       NaN     0
B       2       1
C       3       1

Я знаю, что col2 можно создать с помощью df.col1.map(d), но как я могу одновременно создать col3?

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете создать оба столбца в одной функции assign - сначала по map, а затем по isin для логической маски с приведением к integers:

df = df.assign(col2=df.col1.map(d), col3=df.col1.isin(d.keys()).astype(int))
print (df)
  col1  col2  col3
0    A   1.0     1
1    G   NaN     0
2    E   NaN     0
3    B   2.0     1
4    C   3.0     1

Еще одно двухшаговое решение с другой логической маской - путем проверки не пропущенных значений:

df['col2'] = df.col1.map(d)
df['col3'] = df['col2'].notnull().astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...