Python Python - как преобразовать массив (разной длины с фреймом данных) в фрейм данных и сохранить имя строки и столбца? - PullRequest
0 голосов
/ 25 октября 2018

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

Предполагается, что это мой фрейм данных

   A B C D E
X1 0 0 1 0 1
X2 0 1 2 3 1
X3 0 1 1 0 1

здеськак я рассчитал df

df = df.drop(['colX'], axis=1)
cos_sim = cosine_similarity(df_new_jac)

и он возвращается вот так

array([[0.,   0., 1.],
       [0.,  1., 2.],
       [0.,  1., 1.]

однако я надеюсь увидеть такой результат

   X1 X2 X3 
X1 0  0  1 
X2 0  1  2 
X3 0  1  1 

нов соответствии с тем, что формы 'df' и 'cos_sim' имеют разную форму, я не могу использовать этот код

df = df.set_index('colX')
v = cosine_similarity(df.values)

df[:] = v
df.reset_index()

, как показывает ошибка, len должно быть эквивалентным.есть какие-либо предложения, чтобы решить эту проблему?

1 Ответ

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

не совсем уверен, чего вы здесь добиваетесь, но вот мое лучшее предположение:

import pandas as pd
# the original df
df1 = pd.DataFrame({'index': ['X1','X2','X3'], 'A':[0,0,0], 'B':[0,1,1], 'C': [1,2,1], 'D': [0,3,0], 'E':[1,1,1]})
# the cosine_similarity df
df2 = pd.DataFrame({'index': ['X1','X2','X3'], 'X1':[0,0,0], 'X2':[0, 1,1], 'X3':[1,2,1]})
# note the 'index' column is a column, not the index.

# merge the 2, by default on the common column (i.e. the 'index' column)
df = df1.merge(df2)
df.set_index('index', inplace=True)
>   A   B   C   D   E   X1  X2  X3
index                               
X1  0   0   1   0   1   0   0   1
X2  0   1   2   3   1   0   1   2
X3  0   1   1   0   1   0   1   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...