В python как я могу сделать матрицу количества раз (сколько строк) каждого значения в одном столбце со значениями в другом столбце? - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть отфильтрованный фрейм данных, который меняет количество строк в зависимости от того, как его фильтрует пользователь. Мне нужно посчитать, сколько раз значение в одном столбце совпадает со значением в другом столбце для каждой строки. например: допустим, что мой DF: примерный фрейм данных Мне понадобится матрица 3x3, в которой будут суммы каждого раза, когда значение в столбце A встречается со значением в столбце B. Матрица будет иметь вид: образец матрицы Я могу определить, каким должен быть размер матрицы и какие уникальные значения для каждого столбца и сколько раз они встречаются, но нужно найти эффективный способ суммировать, как часто значения появляются вместе ,

1 Ответ

0 голосов
/ 08 февраля 2020

Мне удалось добиться желаемого результата, например:

from collections import Counter
import pandas as pd

df = pd.DataFrame({'A':[500,500,300,400,400,300],'B':[10,10,20,10,20,30]})
inp = df.groupby('A')['B'].agg(Counter).to_frame()
out = pd.DataFrame.from_records(inp['B'].tolist(), index=inp.index).fillna(0).T

выход:

A   300  400  500
20  1.0  1.0  0.0
30  1.0  0.0  0.0
10  0.0  1.0  2.0

groupyby / Counter подсчитывает, сколько вхождений значений в B встречается в каждом значении на втором шаге распаковывает столбец словарей в фрейм данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...