@道术结合 厉害,实测了下,在@不油腻也大叔 的基础上进一步提速5-6倍,优化点在于规避了遍历每一个需要标注为1的寻址操作,取而代之用列赋值操作,即将一个Series直接赋给一个新列,新列名为行业代码(比如sw_l1下的38个一级行业代码中的某一个),该Series的索引为该行业代码下的所有个股代码,巧妙之处就在于在赋值时,该Series的索引与DataFrame的索引会自动匹配对齐,而且底层代码应该是用c语言写的,性能也得到了大幅提升!
小小的一段代码,不同写法性能差异天壤之别,值得深入研究。
附录:在聚宽回测环境下,不同版本get_industry_exposure()的耗时差异:
耗时 73.53 秒 (原作者代码)
耗时 1.07 秒 (@不油腻也大叔 版本)
耗时 0.17 秒 (@道术结合 版本)
2023-05-18