优化python dict

时间:2017-11-07 09:59:18

标签: python pandas dictionary optimization

目标是在每个id下获得3个最高值,并按顺序分配“primary”,“secondary”,“tertiary”。 例如,对于x1,x2,x3(它们是存储组),d_id = 1具有值100,200,300。 因此,对于d_id = 1,x3将是主存储,依此类推。 以下是该过程的代码。

cols = ["d_id", "primary", "secondary","tertiary"]
scoring_results = pd.DataFrame(columns = cols, index = scoreperseg.index)

zz = len(scoreperseg)
d_count = 0
for index, row in scoreperseg.iterrows():

    d_count += 1

    row_sorted = row.sort_values(ascending=False)

    scoring_results.ix[index]['d_id']            = index
    scoring_results.ix[index]['primary']         = segment_map[row_sorted[0:3].idxmax()][1][0]
    scoring_results.ix[index]['secondary']       = segment_map[row_sorted[1:3].idxmax()][1][0]
    scoring_results.ix[index]['tertiary']        = segment_map[row_sorted[2:3].idxmax()][1][0]

Segment_Map Key         
['A', 'B', 'C', 'D' s14         
['Premiums']    s14         
['Movies']  s14         
Score_Per_Seg               
d_id    s2  s41 s47 s14
3   0   0   0   0.002507676
225 0   0   0   0
Scoring_Result              
d_id    segment segment_genre       
3   Premium Movies

@COLDSPEED 这有用吗? 因此,对于上面的示例,我需要对score_per_seg中的每一行进行排序,获取3个最高的段值,然后在段映射中找到这些段的索引,然后将得分结果中的段映射中的值存储为主要值,中学,大专。 我希望这很清楚,可以理解。

有超过500万个d_id,此过程目前需要2个多小时才能完成。 有没有办法优化这些操作。 我试过寻找并行操作,但我认为这不会起作用。 有人可以指导我吗? Segment_Map包含一个家庭在一年内从特定商店购买的平均次数。

0 个答案:

没有答案