我有两个数据帧。一个(df1),带有CIDR和一个列,该列将始终是用于丰富第二个数据帧的列。另一个数据帧(DF2)有一个IP列表。我想通过DF1中的CIDR迭代IP,如果它在一个中,则标记DF2。我已经通读了图书馆的文件
ipaddress
和
netaddr
并且在过去使用过这两个库,但在这种情况下,我很难确定如何使用它们。
如果得到CIDR 13.64.0.0/11的范围,将得到13-64.0.0-13.95.255.255。13.64.1.100属于该范围
数据帧:
df1
CIDR inCIDR
0 13.64.0.0/11 1
1 13.96.0.0/13 1
2 13.104.0.0/14 1
3 20.34.0.0/15 1
4 20.36.0.0/14 1
5 20.40.0.0/13 1
6 20.128.0.0/16 1
7 20.140.0.0/15 1
8 20.144.0.0/14 1
9 20.160.0.0/12 1
10 20.176.0.0/14 1
11 20.180.0.0/14 1
12 20.184.0.0/13 1
13 23.96.0.0/13 1
14 40.64.0.0/10 1
15 42.159.0.0/16 1
df2
ipaddress
0 18.235.100.252
1 13.64.1.100
2 40.64.11.22
3 184.84.243.59
4 184.84.243.119
5 20.180.22.12
6 3.17.7.58
7 34.233.202.21
8 42.159.10.10
期望输出:
df2
ipaddress inCIDR
0 18.235.100.252 0
1 13.64.1.100 1
2 40.64.11.22 1
3 184.84.243.59 0
4 184.84.243.119 0
5 20.180.22.12 1
6 3.17.7.58 0
7 34.233.202.21 0
8 42.159.10.10 1
可能使用map来分配incidr,例如:
df2['inCIDR'] = df2['ipaddress'].map(df1.set_index('ipaddress')['inCIDR']).fillna(0).astype(int)