Со следующим DataFrame:
>>> df = pd.DataFrame(data={'category':['a','b','c'],'val':[1,2,3]})
>>> df
category val
0 a 1
1 b 2
2 c 3
Я объединяю полученные столбцы-пустышки и удаляю исходный столбец следующим образом:
>>> df = pd.concat([df, pd.get_dummies(df['category'], prefix='cat')], axis=1).drop(['category'], axis=1)
>>> df
val cat_a cat_b cat_c
0 1 1 0 0
1 2 0 1 0
2 3 0 0 1
Затем добавляю еще один столбец длябудущее неизвестное значение, например так:
>>> df['cat_unkown'] = 0
>>> df
val cat_a cat_b cat_c cat_unkown
0 1 1 0 0 0
1 2 0 1 0 0
2 3 0 0 1 0
Теперь я хотел бы получить get_dummies для нового DataFrame, но сопоставить его с доступными столбцами, что означает: если столбец категории существует, используйте его в противном случаеустановите для cat_unkown значение 1
, например, для следующего фрейма данных:
category val
0 a 1
1 b 2
2 d 3
Результат будет следующим:
val cat_a cat_b cat_c cat_unkonw
0 1 1 0 0 0
1 2 0 1 0 0
2 3 0 0 0 1
Какой эффективный способ сделать это?
Обновление : Просто немного уточню, В моей реальной задаче у меня есть фреймы данных после того, как get_dummies дал результаты.