我有一个问题,我的熊猫数据分析运行非常缓慢,不知道是否有人可以帮助请。
如果一个帧中的IP地址是另一个帧中网络的一部分,我将尝试比较两个数据帧:
我正在将另外7列添加到AssetFrame,以便在匹配后获取新值。
for index, row in AssetFrame.iterrows():
IPstore = AssetFrame.loc[index, 'ipv4s'].split(',')
for index, row in VFFrame.iterrows():
net = ipaddress.IPv4Network(VFFrame.loc[index, 'CIDR'])
for i in range(len(IPstore)):
IPstore[i] = IPstore[i].strip()
IP = ipaddress.IPv4Address(IPstore[i])
if IP in net:
row = [IP, net] # Used to check list of matches to export as CSV,
TheList.append(row) # to check my assumption below is correct.
# All IPs will be in the same network 'CIDR' or there will be no match
# The columns have already been added to the AssetFrame ready to take the new values
AssetFrame.loc[index, 'comment'] = VFFrame.loc[index, 'comment']
AssetFrame.loc[index, 'country'] = VFFrame.loc[index, 'country']
AssetFrame.loc[index, 'city'] = VFFrame.loc[index, 'city']
AssetFrame.loc[index, 'site-name'] = VFFrame.loc[index, 'site-name']
AssetFrame.loc[index, 'site-id'] = VFFrame.loc[index, 'site-id']
AssetFrame.loc[index, 'vf-device'] = VFFrame.loc[index, 'vf-device']
AssetFrame.loc[index, 'vlan'] = VFFrame.loc[index, 'vlan']
AssetFrame:
id ipv4s fqdn
0 b564a4 192.168.20.4 too.many@cats121.com
1 e454a4 192.168.20.74 too.many@dogs231.com
2 a454a4 192.168.20.84 too.many@worms456.com
VFFrame:
subnet mask CIDR Comment vlan
0 192.168.20.0 255.255.255.224 192.168.20.0/26 Blah Blah 101
1 192.168.20.64 255.255.255.240 192.168.20.64/28 Ditto Blah 201
Result Should be:
AssetFrame:
id ipv4s fqdn Comment vlan
0 b564a4 192.168.20.4 too.many@cats121.com Blah Blah 101
1 e454a4 192.168.20.74 too.many@dogs231.com Ditto Blah 201
2 a454a4 192.168.20.84 too.many@Worms456.com No Match No Match
数据帧和所需输出的示例:
“分而治之”是你的朋友。首先,我们有O(n³)的复杂性,这不是什么大问题。在这些情况下,第一步是了解时间在哪里损失,我可以猜出原因。loc是瓶颈。但是为了清楚的分析,我建议使用一个执行工具。我编写了perf_工具,可以指导您找到解决方案:
一些命中率
>
内部循环做标量赋值时,你可以做矢量模式。AssetFrame.loc非常昂贵,调用次数太多。
中间循环再次对每个记录进行阐述,这可以使用掩码在矢量模式下完成
在每一行上再次顶部循环iter。
在DataFrames之间执行一次合并操作时,可能会删除Top和Media循环。
主要内容:Python 交互式编程,编写 Python 源文件Python 是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式: 1) 交互式编程 在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行代码,你还可以继续输入下一行代码,再次回车并查看结果……整个过程就好像我们在和计算机对话,所以称为交互式编程。 2) 编写源文件 创建一个源文件,将所有代码放在源文件中,让解释器逐行读取并执行源文件中的代码,直到文
问题内容: 所以我有点像Python,但是我遇到了问题……运行它。大声笑 我现在正在使用IDLE,但是它没有任何用处,因为一次只能运行几行。 我还使用Komodo Edit创建实际的.py文件。 我的问题是,如何运行.py文件来测试实际程序? 我正在使用Windows 7和Komodo Edit 5作为我的IDE。在Komodo中按F5根本不起作用。 问题答案: 我很高兴你问!我只是在Wikibo
Traceback(最近的调用最后): 文件“C:\Users\MUHAMMAD ALI QURESHI\Anaconda3\lib\site packages\IPython\core\interactiveshell.py”,第2910行,运行代码exec(代码obj、self.user、全局用户、self.user) 文件“”,第4行,从lmfit开始。模型导入负载模型 文件“C:\User
在尝试运行我的代码时出现了这个持续的错误,我无法理解它的含义以及如何使其正确。 C: \code\sentmentanalysis \venv\sentment-alysis \Scripts\python。exe“C:/code/sentimentanalysis/main.py跟踪(最近一次调用): 文件”C:/code/entimentanalysis/main。py”,第1行,在impor
问题内容: 我有一个演示文件:。在Windows控制台中,我可以使用以下命令运行文件: 我该如何在Python Shell中执行文件? 问题答案: 对 python 2 使用execfile: 对 python 3 使用exec
安装lein 下载安装脚本 wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein 把lein放到~/bin下并chmod +x lein增加可执行权限(默认我们的bash是会自动把~/bin加到PATH环境变量里的) 执行lein,自动下载安装所需的软件包 安装streamparser 如果没有安