Если у меня есть датафрейм в форме:
tag element_id
1 12
1 13
1 15
2 12
2 13
2 19
3 12
3 15
3 22
как я могу вычислить перекрытия tags
в терминах element_id
? Я предполагаю, что результатом должна быть матрица перекрытия вида:
1 2 3
1 X 2 2
2 2 X 1
3 2 1 X
, где я ставлю X по диагонали, поскольку перекрытие тега с самим собой не имеет значения, а цифры в матрице представляют общую сумму element_ids
, которую разделяют два тега.
Мои попытки:
Вы можете попробовать использовать цикл for, например:
for item in df.itertuples():
element_lst += [item.element_id]
element_tag = item.tag
# then intersect the element_list row by row.
# This is extremely costly for large datasets
Второе, о чем я думал, это использовать df.groupby('tag')
и попытаться каким-то образом пересечь на element_id
, но мне не ясно, как я могу это сделать с сгруппированными данными.