В Python (Pandas), как сгенерировать перекрестную таблицу категориальных значений, подобных этому?

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных Pandas, подобный этому

     device_id   content
    a            X
    a            Z
    b            Y
    c            X
    c            Y
    d            Z
    e            Z
    e            Y
    e            X
  

Он содержит данные различного содержания, к которым имеет доступ устройство. В обоих столбцах могут быть повторяющиеся значения. Я хочу сгенерировать перекрестную вкладку, где ячейка [i,j] в таблице представляет, сколько людей (идентификатор устройства) получили доступ к обоим содержимому i и j . Вот так —

         X   Y   Z
    X   0   2   1
    Y   2   0   1
    Z   1   1   0
  

Например, таблица [X, Y] = 2 говорит мне, что 2 человека смотрели как X, так и Y. Как мне сгенерировать эту перекрестную таблицу?

Ответ №1:

Я считаю, что вам нужно:

 df = df.merge(df, on='device_id')
df = pd.crosstab(df['content_x'], df['content_y'])
print (df)
content_y  X  Y  Z
content_x         
X          3  2  2
Y          2  3  1
Z          2  1  3