Подсчет вхождений перестановок данного столбца - PullRequest
0 голосов
/ 12 декабря 2018

В Pyhon я пытаюсь что-то кодировать, чтобы подсчитать экземпляры заданной перестановки в наборе данных.Позвольте мне быть более ясным.Учитывая следующий фрейм данных

   WEB_ID          Category
   12332405        a
   3763583         b
   7930245         c
   7930245         a

Я хотел бы иметь фрейм данных, который выглядит следующим образом.

s    t    q
a    b    0
a    c    1
b    a    0
b    c    0
c    a    1
c    b    0

Это чтение, есть 0 идентификаторов, которые имеют категории a и b, 1с a и c, 0 с b и a ... и так далее.

Я до сих пор создаю перестановки всех категорий, используя модуль Itertools.У меня есть некоторые идеи, но все это выглядит уродливо и неэффективно.

Я ценю любую помощь, если неясно, дайте мне знать, и я добавлю детали.

Спасибо, сообщество!

1 Ответ

0 голосов
/ 12 декабря 2018

Есть сообщения о способах сделать декартово произведение более эффективным , но основная идея такова:

  • merge на 'WEB_ID', чтобы получить все комбинации 'Category'.(Это по сути дает взаимность AB-BA совпадений, которые вы хотите получить)
  • groupby + size для подсчета вхождений.
  • .reindex для получения нулей.
  • удалить вещи, которые слились с собой.

Код:

import pandas as pd

res = (df.merge(df, on='WEB_ID')
         .groupby(['Category_x', 'Category_y']).size()
         .reindex(pd.MultiIndex.from_product([df.Category.unique()]*2, 
                                              names=['s', 't']))).fillna(0)

res = res[res.index.get_level_values(0) != res.index.get_level_values(1)]
res = res.to_frame('q')

Вывод: res

       q
s t     
a b  0.0
  c  1.0
b a  0.0
  c  0.0
c a  1.0
  b  0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...