start_decimal_ip end_decimal_ip isSL ... isSUBNET isINTERNET isISP
0 621457152 621457663 1 ... 0 1 0
1 3273214112 3273214143 0 ... 0 0 0
2 1280513280 1280513535 1 ... 1 0 0
3 3581584960 3581584975 0 ... 0 0 0
4 3564859176 3564859179 1 ... 0 0 0
5 1049781248 1049782271 1 ... 0 0 0
6 3262479184 3262479194 0 ... 0 0 0
target ip decimal_ip
0 1 62.184.112.1 1052274689
1 1 194.30.89.1 3256768769
2 1 194.117.123.83 3262479187
3 1 195.235.249.73 3287021897
我想将两个数据框,一个表( ips_data )与IP,十进制格式的IP,目标(无论是否为isp)进行组合。另一个表( ripe_features )具有IP范围的起点和终点(十进制),以及多个值。我的目标是在 ips_data 的IP在范围内时获取 ripe_features 的值。我做了一个第一次尝试,创建了_fake_key = 1_,但是我的 ripe_features 数据库很大(超过400万行),所以这种方法似乎不健康。
我想知道是否有更好的方法来避免这种合并。我正在考虑在 ripe_features 中使用for()循环为开始/结束范围内的每个IP新建一个列表/列“ ip”,以返回IP,否则返回null,然后进行合并使用on ='ip'。
target,ip,isSL,isSA,isADSL,isDSL,isWIFI,isHOTSPOT,isBLOCK,isSUBNET,isINTERNET,isISP
1,194.117.123.83,0,1,0,0,0,0,0,0,0,0
1,195.55.122.48,1,0,0,0,0,0,0,0,0,0
1,37.15.99.177,0,0,1,0,0,0,0,0,0,1