У меня есть такой текстовый файл:
444537110 3 11112111022002200022022111121222002...
Последнее поле во входном файле имеет длину 50 тыс. символов и может быть только 0,1 или 2. Мне нужна одна версия этого последнего поля с горячим кодированием. Итак, мой ожидаемый результат - это такой кадр данных:
id chip g1_0 g1_1 g1_2 g2_0 g2_1 g2_2 g3_0 g3_1 g3_2 g4_0 ...
444537110 3 0 1 0 0 1 0 0 1 0 0
Я создал начальный кадр данных, прочитав входной файл:
df = pd.read_csv('test.txt', index_col=0, sep='\s+', header=None, names = ['chip', 'genos'])
Это создает кадр данных с 3 столбцами как:
id chip genos
444537110 3 1111211102200220000022022111121222000200022002...
Я думал, что смогу создать начальные отдельные столбцы, используя что-то вроде ниже, а затем используя функцию pandas get_dummies для одной горячей кодировки, но мне не удалось создать отдельные столбцы. я пытался
[c for c in df['genos'].str]
но это не разделение символов
Я рассмотрел аналогичный вопрос и ответил здесь: Как я могу кодировать на Python?
но это касается только одного горячего кодирования и не связано с дополнительными сложностями разделения очень большого столбца.
df['genos'].str.get_dummies()
, хотя не уверен в предоставленных данных - person anky   schedule 24.06.2019