Я думаю, что смогу решить эту проблему без особых трудностей, но подозреваю, что любое решение, которое я придумаю, будет неоптимальным, поэтому мне интересно, как настоящие pandas эксперты сделают это; Я уверен, что мог бы кое-что узнать из этого.
У меня есть таблица данных с горячим кодированием, что-то вроде:
Index. A1. A2. A3. B1. B2. C1. C2. C3. C4.
0. True. False. True. True. True. False. True. False. False.
...
Таким образом, каждая запись является логической, и моя столбцы состоят из нескольких групп категорий (A, B и C).
Я хочу создать новые DataFrames, в которых я выбираю любые две категории и получаю таблицу с подсчетом количества людей находятся в паре категорий, соответствующих этой строке / столбцу. Итак, если бы я смотрел на категории A и B, я бы сгенерировал таблицу:
Index. A1. A2. A3. None Total
B1. x11. x12. x13. x1N x1T
B2. x21. x22. x23. x2N. x2T
None. xN1. xN2. xN3. xNN xNT
Total. xT1. xT2. xT3. xTN xTT
, где x11 - это количество строк в исходной таблице, которые имеют как A1, так и B1 True, x12 - это количество из тех строк, которые имеют A1 и B2 True, и т. д.
Меня также интересует количество тех записей, где все значения A были False и / или все значения B были ложными, которые учитывается в столбцах «Нет».
Наконец, мне также нужны итоги строк, в которых любой из столбцов в соответствующей категории имеет значение «Истина». Таким образом, x1T будет количеством строк, в которых B1 имеет значение True, а любой из A1, A2 или A3 - True и так далее (обратите внимание, что это не просто сумма x11, x12 и x13, поскольку категории не всегда являются взаимоисключающими; например, строка может иметь как A1 True, так и A2 True). xNN - это количество строк, которые имеют все ложные значения для A1, A2, A3, B1, B2, а xTT - это количество строк, которые имеют хотя бы одно истинное значение для любого из A1, A2, A3, B1 и B2, поэтому xNN + xTT будет равно общему количеству строк в исходной таблице.
Спасибо, Грэм