我有两个数据框。第一个包含所有主要数据,每一行如下:
timestamp|source_ip|destination_ip|number_packets|number_bytes|etc.
第二个包含IP地址和这些地址所属的网络的参考表:
network1|ip_address1
network1|ip_address2
network2|ip_address3
etc.|etc.
可能它包含带有子网掩码的网络地址,例如:
network3|ip_network/submask
那么数据框1在数据框2中为其地址(例如source_ip
)找到网络的最佳方法是什么?参考表不必是数据框。只要可以方便地参考信息,任何数据结构都可以。有什么建议吗?
谢谢。
答案 0 :(得分:1)
要首先实现此目的,您可以将network
和ip_address
的映射存储在字典中:
mapping = { ip_address1: network1,
ip_address2: network1,
ip_address3: network2,
... }
要从主数据框中找到与network
的每个条目相对应的source_ip
,请使用以下方法:
df['network'] = df['source_ip'].apply(lambda x: mapping[x])
这会在主数据框中为您提供名为network
的附加列,我们假设其名称为df
,列为source_ip
。