кодировать несколько столбцов на основе списков и словарей в Python - PullRequest
0 голосов
/ 27 августа 2018

У меня есть следующий фрейм данных в Pandas

 OfferPreference_A  OfferPreference_B   OfferPreference_C   
            A          B                  A                  
            B          C                  C                 
            C          S                  G  

У меня есть следующий словарь уникальных значений под всеми столбцами

  dict1={A:1, B:2, C:3, S:4, G:5, D:6}

У меня также есть список названий столбцов

  columnlist=['OfferPreference_A', 'OfferPreference_B', 'OfferPreference_C']

Я пытаюсь получить следующую таблицу в качестве вывода

    OfferPreference_A   OfferPreference_B   OfferPreference_C   
               1           2                  1                  
               2           3                 3                  
               3           4                  5  

Как мне это сделать.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы можете использовать map для этого, как показано ниже, при условии, что значения всегда будут совпадать

for col in columnlist:
    df[col] = df[col].map(dict1)
0 голосов
/ 27 августа 2018

Использование:

#if value not match get NaN
df = df[columnlist].applymap(dict1.get)

Или:

#if value not match get original value
df = df[columnlist].replace(dict1)

Или:

#if value not match get NaN
df = df[columnlist].stack().map(dict1).unstack()

print (df)
   OfferPreference_A  OfferPreference_B  OfferPreference_C
0                  1                  2                  1
1                  2                  3                  3
2                  3                  4                  5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...