我想在下面给出一个For循环,在python中更快。
# Getting all tempno1 into a list with one step
tempno1 = [np.append(tempno,ib) for ib in [xb for xb in range(0,len(xl))]]
temp = [list(set(tempk)) for tempk in tempno1]
# Taking only needed columns from x and y dfs
xtemp = xl[['Concat']]
ytemp = yl[['Concat','ships_x','ships_y','PickDate']]
#Shortlisting y df and groupby in two diff steps
ytemp = [ytemp[ytemp['Concat'].isin(np.array(xtemp['Concat'][tempnokk]))] for tempnokk in tempno1]
temptab = [ytempk.groupby('PickDate')['ships_x','ships_y'].sum().reset_index() for ytempk in ytemp]
tempkcontri = [tempk['ships_x']/tempk['ships_y'] for tempk in temptab]
tempkcontri = [pd.DataFrame(tempkcontri[i],columns=['contri']) for i in range(0,len(tempkcontri))]
temptab = [temptab[i].join(tempkcontri[i]) for i in range(0,len(temptab))]
pcv = [1 if math.isnan(scipy.stats.variation(temptabkk['contri'])) else scipy.stats.variation(temptabkk['contri']) for temptabkk in temptab]
p = pd.DataFrame({'temp' : temp,'cv': pcv})
其中,
xl,yl - 我正在使用Concat,x_ships和y_ships等列的两个数据框。
tempno - xl数据帧索引的初始列表,引用'Concat'值列表。
因此,在for循环中,我们在每次迭代中向tempno添加一个额外的索引,然后根据与'xl'数据帧的值匹配的'Concat'值来子集'yl'数据帧。然后,我们找到“变异系数”(取自scipy lib)并在新数据帧“p”中记录。
问题是,由于for循环的迭代次数变化,因此需要花费太多时间。 'group_by'行占用了最多时间。我已经尝试过并进行了一些更改,现在代码看起来如下所示,在评论中提到了更改。虽然略有改善,但这并没有解决我的目的。请建议以最快的方式实现此目的。非常感谢。
$(document).ready(function() {
$('.entry-content').css({'height':'40px','overflow': 'hidden'});
$('.show-more').on('click',function() {
if($(this).hasClass('less')){
$('.entry-content').animate({
'height': '40px'
}, 500);
$(this).html("Show More")
}
else{
$('.entry-content').animate({
'height': $(".entry-content").get(0).scrollHeight
}, 500);
$(this).html("Show Less")
}
$(this).toggleClass('less');
});
});