Извлекайте несколько разреженных ответов на идентификаторы «да/нет», сохраняя при этом информацию о строках.Python

Программы на Python
Ответить
Anonymous
 Извлекайте несколько разреженных ответов на идентификаторы «да/нет», сохраняя при этом информацию о строках.

Сообщение Anonymous »

У меня есть данные из Google Таблиц, в которых есть вопрос с несколькими ответами, например:

Код: Выделить всё

   Q1  Q2  ... Multi-Response
0  ... ... ... "A; B"
1  ... ... ... "B; C"
2  ... ... ... "D; F"
3  ... ... ... "A; B; F"
(Обратите внимание на пробелы, разделителем является '; ' по странным причинам, связанным с тем, как автор опроса писал вопросы и как Google Таблицы решили вывести таблицу ответов)
Я пытаюсь расширить это, чтобы можно было выполнить кластеризацию в k-режиме:

Код: Выделить всё

   Q1  Q2  ... A  B  C  D  F
0  ... ... ... 1  1  0  0  0
1  ... ... ... 0  1  1  0  0
2  ... ... ... 0  0  0  1  1
3  ... ... ... 1  1  0  0  1
Идея состоит в том, чтобы более или менее сопоставить каждый список ответов с серией вопросов «согласны ли вы? да/нет».
Но я могу Не совсем понимаю, как преобразовать фрейм данных в этот формат. Я пробовал использовать Pivot_table и get_dummies, но если они могут это сделать, мне не совсем понятно, как это работает.
Я могу получить таблицу ответы с помощью

Код: Выделить всё

multi_selection_question = data.keys()[-1]
expanded = data[multi_selection_question].str.split('; ', expand=True)
что дает что-то вроде

Код: Выделить всё

  0 1 2
0 A B None
1 B C None
2 D F None
3 A B F
И список вопросов, которые будут правильными именами столбцов:

Код: Выделить всё

questions = pandas.Series(expanded.values.flatten()).unique()
Но примеры для Pivot_table или get_dummies, которые я видел, похоже, требуют данных в другом формате с более последовательной структурой столбцов, чем то, что выводится. Например, использование get_dummies создает отдельную категорию для каждой пары (столбец, вопрос), поэтому для приведенной выше таблицы примера — 2_F, 3_F, 1_B, 2_B и т. д.
Конечно, я мог бы просто прибегнуть к паре циклов и построить новый кадр данных построчно и объединить его, но обычно в пандах есть лучший способ.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -preservin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»