Панды: как найти строку и столбец для значений в диапазоне? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть Pandas DataFrame, который генерируется при выполнении нескольких корреляций между переменными.

corr = df.apply(lambda s: df.corrwith(s))
print('\n', 'Correlations')
print(corr.to_string())

Вывод выглядит следующим образом:

 Correlations
        A         B           C          D          E
A   1.000000   -0.901104    0.662530  -0.772657   0.532606
B  -0.901104    1.000000   -0.380257   0.946223  -0.830466
C   0.662530   -0.380257    1.000000  -0.227531  -0.102506
D  -0.772657    0.946223   -0.227531   1.000000  -0.888768
E   0.532606   -0.830466   -0.102506  -0.888768   1.000000

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

Например, корреляции между +0.25 и -0.25 .Мой желаемый результат будет:

E x C = -0.102506
D x C = -0.227531

При поиске я обнаружил несколько функций панд, которые я не могу связным образом соединить: pandas iloc, loc , Панды между

Как бы вы посоветовали мне выполнить эту фильтрацию?

1 Ответ

0 голосов
/ 26 октября 2018

Используйте маски + DataFrame.where.Мы будем использовать np.triu, чтобы избавиться от дубликатов, поскольку матрица корреляции симметрична.

import numpy as np

corr.where(np.triu((corr.values <= 0.25) & (corr.values >= -0.25))).stack()

C  D   -0.227531
   E   -0.102506
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...