Как закодировать строку pandas с пользовательскими значениями?

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Я хотел бы закодировать значения строк выбранного столбца в pandas.

Например, давайте предположим, что у меня есть следующий фрейм данных

     Col_A  Col_B
0    SV     NT
1    NT     P
2    SV     I
3    P      SV
4    I      P
  

У меня есть словарь, содержащий значения encode для каждой строки столбца, как показано ниже

 encode_values = { 
    "Col_A" : {"NT": 1, "SV": 0, "P": 1, "I": 0},
    "Col_B": {"NT": 10, "SV": 0, "P": 10, "I": 0}
}
  

Мне нужен новый фрейм данных с пользовательскими кодировками для каждого из этих столбцов

Результат: —

     Col_A  Col_B
0    0     10
1    1     10
2    0     0
3    1     0
4    0     10
  

Ответ №1:

Вы можете apply и map использовать имена столбцов:

 print (df.apply(lambda d: d.map(encode_values[d.name])))

   Col_A  Col_B
0      0     10
1      1     10
2      0      0
3      1      0
4      0     10
  

Ответ №2:

Попробуйте replace использовать dictionary в качестве параметра, применить отдельно к каждой серии в df:

 df.Col_A = df.Col_A.replace (encode_values['Col_A'])
df.Col_B = df.Col_B.replace (encode_values['Col_B'])