Количество строк, где заданные столбцы DataFrame отличны от нуля

python pandas matrix dataframe

234 просмотра

1 ответ

1691 Репутация автора

У меня есть, Pandas DataFrameчто выглядит так:

MemberID    A    B    C    D
1           0.3  0.5 0.1   0
2           0    0.2 0.9   0.3
3           0.4  0.2 0.5   0.3
4           0.1  0   0     0.7

Я хотел бы иметь другую матрицу, которая дает мне количество ненулевых элементов для пересечения каждого столбца, кроме MemberID.

Например, пересечение столбцов Aи Bбудет равно 2 (потому что MemberID1 и 3 имеют ненулевые значения для Aи B), пересечение Aи Cбудет равно 2 (потому что MemberID1 и 3 имеют ненулевые значения для Aи C).

Окончательная матрица будет выглядеть так:

    A    B    C    D
A   3    2    2    2
B   2    3    3    2
C   2    3    3    2
D   2    2    2    3

Как видим, это должна быть симметричная матрица, похожая на матрицу корреляции, но не матрицу корреляции.

Пересечение любых 2 столбцов = количество MemberIDненулевых значений в обоих столбцах.

Я хотел бы показать некоторый исходный код здесь, но я чувствую, что будет простая функция для выполнения этой задачи, о которой я не знаю.

Вот код для создания DataFrame:

df = pd.DataFrame([[0.3, 0.5,  0.1, 0],
                   [0,  0.2,  0.9, 0.3],
                   [ 0.4,  0.2,  0.5, 0.3],
                   [ 0.1, 0, 0,  0.7]],
                  columns=list('ABCD'))

Любые указатели будут оценены. ТИА.

Автор: Patthebug Источник Размещён: 18.07.2016 09:05

Ответы (1)


4 плюса

183182 Репутация автора

Решение

Это должно к нему:

z = (df != 0) * 1
z.T.dot(z)

введите описание изображения здесь

Автор: piRSquared Размещён: 18.07.2016 09:27
Вопросы из категории :
32x32