pandas 查询某行记录 速度优化!(速度提升10倍以上)

最近,为了提高数据量为200多万数据的查询速度,可是费了老大功夫。下面是一些实验,最后有总结。

前提说明:   你已经知道所找数据的 id(key),需要在dataframe中找到你需要的数据。

实验一:pandas 的 query方法 ,(fu_gongxu为一个 id数组,gongxu为dataframe。)

mubiao = gongxu.query('key == {}'.format(fu_gongxu))

运行时间:0.3142213821411133, 速度还行,但是100个 fu_gongxu 数组会等半小时的。

实验二:pandas 的 loc方法

mubiao = gongxu.loc[gongxu['key'].isin(fu_gongxu)]

运行时间:0.2902202606201172 ,速度提升一点

实验三:pandas的 at方法,

for i in fu_gongxu:
    mubiao.append('{} {} {} {} {}{}'.format(gongxu.at[int(i),'key'],

                           gongxu.at[int(i),'UNIT_CAPTION'],gongxu.at[int(i),'PRODUCT_TIME_START'],

                           gongxu.at[int(i),'MATERIAL_ID'],gongxu.at[int(i),'PRODUCT_ID'],gongxu.at[int(i),'CREW_OPT']))

运行时间:0.1611170768737793 ,速度快一倍。

实验四:pandas的 iat方法

gongxu.set_index('key',inplace=True)

for i in fu_gongxu:
    mubiao.append('{} {} {} {} {} {}'.format(gongxu.iat[int(i), 18], gongxu.iat[int(i), 1],
                                             gongxu.iat[int(i), 3], gongxu.iat[int(i), 4],
                                             gongxu.iat[int(i), 5], gongxu.iat[int(i), 16]))

运行时间:0.025017261505126953 ,快了10-20,(前提设置好index 后,再计算时间与处理)

 

总结

设置好index后,用iat查询,查询速度很快,可以忽略。我把前面的查询也用这种方式处理,最后运行时间:0.00099945068359375,速度提升300倍。以后不管是查询多少数据都可以很快给出。

有帮助的话,就点个赞支持一下!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值