【发布时间】:2019-02-27 00:05:52
【问题描述】:
我有 2 列的数据框。我想根据 json 文件中存在的 ip 范围过滤这个数据帧。
ip_ranges.json
[
{"start": "45.43.144.0", "end": "45.43.161.255"}
{"start": "104.222.130.0", "end": "104.222.191.255"}
...
]
数据框:
ip,p_value
97.98.173.96,3.7
73.83.192.21,6.9
...
注意:ip_range.json 包含 10 万个元素,我的数据框有 30 万行。
目前,我是这样实现的
- 创建了 python 列表来存储每个范围内的所有 ip。例如 ["45.43.144.0", "45.43.144.1", "45.43.144.2", ..., "45.43.161.255"]。所有IP范围的类似方式。
- 从此列表中删除了重复元素
- 使用此列表构造数据框
- 在“ip”上合并了两个数据帧
此过程适用于少量 ip_ranges。但是对于大量的 ip_ranges,这个过程需要更长的时间才能完成。
有没有更好的方法来更有效地执行此操作?
【问题讨论】:
-
我不确定最终所需的输出,但对于初学者,您是否要检查 Dataframe 中
ip列的每个 ip 是否在ip_ranges.json中的任何范围内?跨度>
标签: pandas dataframe filter python-3.6 ip-address