我有以下df和向量:
df = pd.DataFrame(dict(id = [0,1,2], a=[4,5,6], b=[22,11.1,-5]))
vec = pd.DataFrame(dict(id = [90], a=[9], b=[6.4]))
我想計算 vec 與 df 中所有向量的相似性,沒有 id 列。我知道我可以保留列,計算相似度并將其粘回去。
df_id = df['id']
vec_id = vec['id']
df_wo_id = df.drop(['id'], axis=1)
vec_wo_id = vec.drop(['id'], axis=1)
df_wo_id['similarity'] = df_wo_id.apply(lambda row: 1 - cosine(row, vec_wo_id),axis=1)
df = pd.concat([df_id, df_wo_id], axis=1)
是否有另一種方法可以應用上述更簡單的功能(可能使用一些掩碼)?
uj5u.com熱心網友回復:
您可以預先指定一個掩碼并在 apply 方法中使用它:
mask = ~df.columns.isin(['id'])
df['similiarity'] = df.apply(lambda row: 1 - cosine(row[mask], vec.loc[:,mask]),axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447945.html
標籤:python-3.x 熊猫 数据框
上一篇:如何操作資料框中的列標題字串
