Как получить фиктивную переменную, когда test_set и train_set имеют разные уникальные значения? - PullRequest
1 голос
/ 08 мая 2020

Набор train_set:

  type
0    a
1    b
2    c
3    d
4    e

Если я использую pd.get_dummies, я получу 5 столбцов:

   type_a  type_b  type_c  type_d  type_e
0       1       0       0       0       0
1       0       1       0       0       0
2       0       0       1       0       0
3       0       0       0       1       0
4       0       0       0       0       1

Test_set:

  type
0    a
1    b
2    c
3    d

Если я использую pd.get_dummies, у меня будет только 4 столбца:

   type_a  type_b  type_c  type_d
0       1       0       0       0
1       0       1       0       0
2       0       0       1       0
3       0       0       0       1

Я хочу, чтобы это было:

   type_a  type_b  type_c  type_d type_e
0       1       0       0       0      0
1       0       1       0       0      0
2       0       0       1       0      0
3       0       0       0       1      0

1 Ответ

1 голос
/ 08 мая 2020

Вы можете попробовать reindex со всеми желаемыми columns и fill_value=0:

pd.get_dummies(test_set).reindex(
    ["type_a", "type_b", "type_c", "type_d", "type_e"], axis=1, fill_value=0)

вывод

#    type_a  type_b  type_c  type_d  type_e
# 0       1       0       0       0       0
# 1       0       1       0       0       0
# 2       0       0       1       0       0
# 3       0       0       0       1       0
...