Python 如何加快这一进程

Python 如何加快这一进程,python,pandas,dask,Python,Pandas,Dask,熊猫大师们,我有个问题要问你们 我正在编写一个函数来将IP地址转换为地理位置。我使用IP2LOCATION中的CSV文件作为查找表。查找表如下所示: ip_启动 ip_端 国家代码 国名 州名 城市名称 0 0 16777215 - - - - 1. 16777216 16777471 美国 美利坚合众国 加利福尼亚 洛杉矶 2. 16777472 16778239 CN 中国 福建省 福州 3. 16778240 16779263 金 澳大利亚 维多利亚 墨尔本 4. 16779264 167

熊猫大师们,我有个问题要问你们

我正在编写一个函数来将IP地址转换为地理位置。我使用IP2LOCATION中的CSV文件作为查找表。查找表如下所示:

ip_启动 ip_端 国家代码 国名 州名 城市名称 0 0 16777215 - - - - 1. 16777216 16777471 美国 美利坚合众国 加利福尼亚 洛杉矶 2. 16777472 16778239 CN 中国 福建省 福州 3. 16778240 16779263 金 澳大利亚 维多利亚 墨尔本 4. 16779264 16781311 CN 中国 广东省 广州 ... ... ... ... ... ... ... 2907906 3758094336 3758095359 香港 香港 香港 香港 2907907 3758095360 3758095871 CN 中国 福建省 福州 2907908 3758095872 3758096127 SG 新加坡 新加坡 新加坡 2907909 3758096128 3758096383 金 澳大利亚 昆士兰 布里斯班 2907910 3758096384 4294967295 - - - -
似乎您希望比数据帧广播更快地找到索引。尝试
bisect.bisect\u left
,一旦获得索引,就可以使用
df.iloc
获取地理位置。在您的情况下,您只需获取
ip\u start
并选中左侧

导入对分 作为pd进口熊猫 将numpy作为np导入 lst=np.sort(np.random.randint(100000,size=10000)) %时间对分。左对分(lst,50) CPU时间:用户22µs,系统:0 ns,总计:22µs 壁时间:25.3µs df=pd.DataFrame(lst,columns=['a'])
%时间df[(df.a>30)&(df.a)不确定您是否看到了这一点,但它可能会帮助您-如果您不使用numpy数据结构,它会更快我相信谢谢Galaxyan。我测试过,它很快。@StevenLi:)是的