Метод get_dummies вычисляет количество категорий на основе значений ряда, поэтому необходимо, чтобы значения ряда (столбец в вашем случае), из которого вы извлекали макеты, содержали все категории, которые вы хотитечтобы получить, другими словами, у вас должен быть столбец со значениями всех 4 столбцов, соединенных разделителем.Чтобы собрать все значения вместе, мы используем:
new_col = df[['column1', 'column2', 'column3', 'column4']].apply(lambda x: '|'.join(x), axis=1)
, который в основном объединяет все значения столбца в одну строку с "|"разделитель по очереди для получения этой серии:
0 A|A|D|D
1 B|B|D|D
2 C|C|B|D
3 A|D|D|A
Теперь мы просто применим метод get_dummies(sep='|')
к столбцу выше, чтобы получить макеты с учетом всех категорий, присутствующих в этих столбцах, в одной строке кодаможет быть получен как (я также сопоставляю его с исходным набором данных для получения запрошенного вами формата):
df = pd.concat([df, df[['column1', 'column2', 'column3', 'column4']]
.apply(lambda x: '|'.join(x), axis=1)
.str
.get_dummies(sep='|')], axis=1)