Я хочу горячим образом кодировать кадр данных pandas для целых столбцов, а не для каждого столбца.
Если есть кадр данных, как показано ниже:
df = pd.DataFrame({'A': ['A1', 'A1', 'A1', 'A1', 'A4', 'A5'], 'B': ['A2', 'A2', 'A2', 'A3', np.nan, 'A6], 'C': ['A4', 'A3', 'A3', 'A5', np.nan, np.nan]})
df =
A B C
0 A1 A2 A4
1 A1 A2 A3
2 A1 A2 A3
3 A1 A3 A5
4 A4 NaN NaN
5 A5 A6 NaN
Я хочу закодировать его, как показано ниже:
df =
A1 A2 A3 A4 A5 A6
0 1 1 0 1 0 0
1 1 1 1 0 0 0
2 1 1 1 0 0 0
3 1 0 1 0 1 0
4 0 0 0 1 0 0
5 0 0 0 0 1 1
Однако, если я напишу код, подобный приведенному ниже, результаты будут похожи на приведенные ниже:
df = pd.get_dummies(df, sparse=True)
df =
A_A1 A_A4 A_A5 B_A2 B_A3 B_A6 C_A3 C_A4 C_A5
0 1 0 0 1 0 0 0 1 0
1 1 0 0 1 0 0 1 0 0
2 1 0 0 1 0 0 1 0 0
3 1 0 0 0 1 0 0 0 1
4 0 1 0 0 0 0 0 0 0
5 0 0 1 0 0 1 0 0 0
Как мне выполнить горячее кодирование для целых столбцов?
Если я использую префикс = '', он также создает столбцы, такие как _A1 _A4 _A5 _A2 _A3 _A6 _A3 _A4 _A5.
(Я надеюсь создать код, используя библиотеку pandas или numpy, а не наивный цикл for-loop, потому что мои данные очень большие; 16000000 строк, поэтому итеративный наивный код for-loop потребует длительного времени вычисления).