关于提升pandas执行效率的问题

lihj13758232999 2019-06-01 09:38:40
我有以下的数据,导入到pandas的same_freq_ho_pd里面了(有389行),我的需求很简单:
比如找出表格中d_eci=2132511的所有行,将其对应的d_mod3_value列值改为1或其他值。
类似的操作我要操作十几万到几百万次。所以速度很重要,但是我发现执行的很慢,还没有VBA快。
我开始用apply来完成这个功能,但速度偏慢 。
same_freq_ho_pd["d_mod3_value"] = same_freq_ho_pd.apply(lambda x: fuzhi_mod3(x.d_eci, cell3, cell3_mod3), axis=1)
然后用先将d_eci列中给每个值简历一个列表,用这个列表来辅助定位,赋值,如下:
same_freq_ho_pd.loc[d_eci_dic[cell3], "d_mod3_value"] = cell3_mod3
速度是快了近3倍,但还是远达不到我的期望。
因为我用vba来写这个功能,速度都比这个快了至少6倍。

能够执行,但感觉速度比较慢,因为我这个赋值会要操作几万-几百万次,所以希望速度能够尽量加快,不知道各位高手有没有建议!

...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zps26 2019-06-01
  • 打赏
  • 举报
回复
手机打,说说思路: 将筛选条件d_eci与赋值d_mod3_value这两个字段对应的值做成字典,使用FOR循环,从原表筛选出新的列表并同时对字段赋值,然后把得到的新表concat即可。
lihj13758232999 2019-06-01
  • 打赏
  • 举报
回复

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧