我有一个熊猫DataFrame df
,它由三列组成:doc1,doc2,value
我将所有行的值都设置为0。我想使用jaccard相似度函数更新值(假设已定义)。 我执行以下操作:
df['value'] = 0
for index, row in df.iterrows():
sim = jaccardSim(row['doc1'], row['doc'])
df.at[index, 'value'] = sim
不幸的是,它不起作用。当我打印df
时,我得到df['value']
的值为0。
我该如何解决?
答案 0 :(得分:1)
您可以尝试
df['value']=[jaccardSim(x, y) for x , y in zip(df['doc1'], df['doc'])]
答案 1 :(得分:0)
您可以执行矢量化功能。您应该修改jaccardSim
以获取一行df或创建一个lambda包装函数
jaccardSim = lambda row: jaccardSim(row["doc1"], row["doc2"])
vect_jaccardSim = np.vectorize(jaccardSim)
df['value'] = vect_jaccardSim(df)