আমার প্রতিটি সারিতে একটি ডাটা মান রয়েছে বলে ডেটাফ্রেম রয়েছে।
id list_of_value
0 ['a','b','c']
1 ['d','b','c']
2 ['a','b','c']
3 ['a','b','c']
আমাকে এক সারি এবং অন্যান্য সমস্ত সারিগুলির বিপরীতে স্কোর গণনা করতে হবে
যেমন:
Step 1: Take value of id 0: ['a','b','c'],
Step 2: find the intersection between id 0 and id 1 ,
resultant = ['b','c']
Step 3: Score Calculation => resultant.size / id.size
সমস্ত আইডির জন্য একইভাবে আইডি 0 এবং আইডি 1,2,3 এর মধ্যে 2,3 বার বার করুন।
এবং একটি এন এক্স এন ডাটাফ্রেম তৈরি করুন; এটার মত:
- 0 1 2 3
0 1 0.6 1 1
1 1 1 1 1
2 1 1 1 1
3 1 1 1 1
এখনই আমার কোডটিতে লুপের জন্য একটি মাত্র রয়েছে:
def scoreCalc(x,queryTData):
#mathematical calculation
commonTData = np.intersect1d(np.array(x),queryTData)
return commonTData.size/queryTData.size
ids = list(df['feed_id'])
dfSim = pd.DataFrame()
for indexQFID in range(len(ids)):
queryTData = np.array(df.loc[df['id'] == ids[indexQFID]]['list_of_value'].values.tolist())
dfSim[segmentDfFeedIds[indexQFID]] = segmentDf['list_of_value'].apply(scoreCalc,args=(queryTData,))
এই কাজ করতে একটি ভাল উপায় আছে কি? আমি কেবল একটি লুপ পুনরাবৃত্তি করার পরিবর্তে একটি প্রয়োগ ফাংশন লিখতে পারি? আমি কি এটি দ্রুত করতে পারি?
list_of_value
?
list_of_value
। আমার মোট অর্থ, সমস্ত সারি জুড়ে।