сравнивать строки друг с другом одинаковых значений в столбцах и генерировать матрицу - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть датафрейм, как показано ниже, и я хочу сравнить строки между собой.После этого следует посчитать, как часто две строки во всех столбцах имеют значение один.

object |A|B|C|D|E
101     1 1 1 1 1
102     1 0 1 0 0
103     0 1 0 1 1

то, что я хочу увидеть (я поставил NaN, так как сравнивать одну и ту же строку с самим собой не имеет смысла).

   101 | 102 | 103
101 NaN   2     3
102 2   NaN     0
103 3     0     NaN

Сейчас я делаю только это, но делаю это только для столбцов, а не для строк:

data=pd.DataFrame()#dummy
matrix=data.T.dot(data.T)

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете проверить с помощью dot

s=df.iloc[:,1:].values
s.dot(s.T)
Out[308]: 
array([[5, 2, 3],
       [2, 2, 0],
       [3, 0, 3]], dtype=int64)

Затем мы воссоздаем кадр данных

newdf=pd.DataFrame(s.dot(s.T),index=df.object,columns=df.object)
newdf=newdf.astype(float)
newdf.values[[np.arange(len(newdf))]*2]=np.nan # mask the diagonal to nan
newdf
Out[312]: 
object  101  102  103
object               
101     NaN  2.0  3.0
102     2.0  NaN  0.0
103     3.0  0.0  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...