【发布时间】:2020-01-31 13:21:51
【问题描述】:
我有一个带有'State' 的表,并且关联的 IP CIDR 范围与该状态关联。
表 A
--------------------------------------------------
| ID | State | IP_subnet |
--------------------------------------------------
| 1 | CA | 192.168.1.0/24 |
--------------------------------------------------
| 2 | TX | 172.68.7.0/24 |
--------------------------------------------------
| 3 | NY | 61.141.47.0/24 |
--------------------------------------------------
我想遍历下表并将IP 字段与IP_subnet 字段匹配。
表 B
| ID | IP |
--------------------------------------
| 1 | 61.141.47.1 |
--------------------------------------
| 2 | 192.168.1.48 |
--------------------------------------
| 3 | 172.68.7.124 |
--------------------------------------
| 4 | 40.32.123.212 |
--------------------------------------
以下是我想要的结果:(将关联的State 与IP 匹配)
| ID | IP | State |
--------------------------------------------------
| 1 | 61.141.47.1 | null |
--------------------------------------------------
| 2 | 192.168.1.48 | CA |
--------------------------------------------------
| 3 | 172.68.7.124 | TX |
--------------------------------------------------
| 4 | 40.32.123.212 | NY |
--------------------------------------------------
我知道下面的代码适用于 1 个值。如何遍历 IPs 列与另一个列?
from ipaddress import IPv4Address, IPv4Network
IPv4Address('172.68.7.124') in IPv4Network('172.68.7.0/24')
仅供参考
- 192.168.1.0/24 == 范围 [192.168.1.0 TO 192.168.1.255]
- 172.68.7.0/24 == 范围 [172.68.7.0 TO 172.68.7.255]
初始化列表列表
数据 = [[1, 'CA', '192.168.1.0/24'], [2, 'TX', '172.68.7.0/24'], ['juli', 14], [3, NY , 61.141.47.0/24]]
创建熊猫数据框
df = pd.DataFrame(data, columns = ['ID', 'State', 'IP_subnet'])
【问题讨论】:
-
你的表数据在python中是如何存储的?它是熊猫数据框吗?
-
是的,它在熊猫中
-
@whodat 将 df 数据发布为 pandas 结果而不是字符串生成的表格
-
@ZarakiKenpachi 我还没有真正编码过这个。我将这个概念放在那里,以寻求有关如何处理它的帮助。请帮忙
-
@whodat 首先阅读此pandas.pydata.org/pandas-docs/stable/getting_started/10min.html 并将您的数据转换为 pandas df
标签: python loops ip pattern-matching match