擅长:python、mysql、java
<p>试试这个</p>
<pre><code>range_of_ids = range(len(ids))
def score_calculation(s_id1,s_id2):
s1 = set(list(df.loc[df['id'] == ids[s_id1]]['list_of_value'])[0])
s2 = set(list(df.loc[df['id'] == ids[s_id2]]['list_of_value'])[0])
# Resultant calculation s1&s2
return round(len(s1&s2)/len(s1) , 2)
dic = {indexQFID: [score_calculation(indexQFID,ind) for ind in range_of_ids] for indexQFID in range_of_ids}
dfSim = pd.DataFrame(dic)
print(dfSim)
</code></pre>
<p><strong>输出</strong></p>
<pre><code> 0 1 2 3
0 1.00 0.67 1.00 1.00
1 0.67 1.00 0.67 0.67
2 1.00 0.67 1.00 1.00
3 1.00 0.67 1.00 1.00
</code></pre>
<p>您也可以按如下方式进行操作</p>
<pre><code>dic = {indexQFID: [round(len(set(s1)&set(s2))/len(s1) , 2) for s2 in df['list_of_value']] for indexQFID,s1 in zip(df['id'],df['list_of_value']) }
dfSim = pd.DataFrame(dic)
print(dfSim)
</code></pre>