2017-06-30 7 views
1

2つのデータフレームの同じ位置にある値に2つのデータフレームを適用しようとしています。2つのデータフレームと同じ位置の値に適用関数を結合する方法

2つのデータフレームの各要素はリストタイプで、項目[col、row]のベクトルを表します。

df1 : 

    A  B 
0 vec1 vec2  
1 vec1 vec2  
2 vec1 vec2 

df2 : 

    A  B   
0 vec5 vec5  
1 vec6 vec6  
2 vec7 vec7 

function : gensim.matutils.cossim(vec1,vec2) 

Expected new_df : 
    A     B 
0 cossim(vec1,vec5) cossim(vec2,vec5) 
1 cossim(vec1,vec6) cossim(vec2,vec6) 
2 cossim(vec1,vec7) cossim(vec2,vec7) 

次のコードは、私が実装されました:あなたはfunction独自に定義し、それを適用し、numpy.vectorizeによってそれを変更することができます

AttributeError: 'list' object has no attribute 'sqrt'

答えて

0

for column in df1(): 
    new_df[column] = df1[column].apply(matutils.cossim(df1[x],df2.loc[0,column])) 

は私がように、エラーを取得しています。

import numpy as np 
import pandas as pd 

from sklearn.metrics.pairwise import cosine_similarity 


X = pd.DataFrame([[[0.1,0.1], [0.2,0.2]], [[0.3,0.3], [0.4,0.4]]]) 
Y = pd.DataFrame([[[0.1,0.1], [0.2,0.2]], [[0.3,0.3], [0.4,0.4]]]) 

def func(vecx, vecy): 
    return cosine_similarity(vecx, vecy) 

F = np.vectorize(func)   

print(pd.DataFrame(F(X, Y))) 

あなたは

 0 1 
0 1.0 1.0 
1 1.0 1.0 
を取得します
関連する問題