我有一个df,在一个标有url的列中,有数千个类似于下面这些链接的用户:
https://www.google.com/something
https://mail.google.com/anohtersomething
https://calendar.google.com/somethingelse
https://www.amazon.com/yetanotherthing
我有以下代码:
^{pr2}$
代码能够正确地解析和分割url,但是由于我要遍历df的每一行,所以速度很慢。有没有更有效的方法来解析网址?在
Tags:
我认为当您写回
df
时,会发生太多的查找。看起来每个df.loc[row_index, ...]
需要检查的行数与URL的总数(大小为df.url
)相同。这意味着,首先至少要查看所有行一次以找到唯一的url,然后对于每个url,您都要再次查找匹配的行,然后再对每次写入进行一次。因此,假设unique
只进行一次完整扫描,则平均扫描1+N+(5N/2)
次。你真的只需要一次。在除非有大量的重复,否则可以忽略重复项,逐行遍历
df
,并确保每次迭代都使用整数索引。(.iloc
)如果不在行中存储其他数据,也可以一次分配所有字段:您可以使用^{} 在一行中完成相同的操作:
使用timeit,当在186个url上运行时,它在每个循环
2.31 ms
中运行,而不是像原来的方法那样在每个循环中179 ms
。(但是请注意,代码没有针对重复项进行优化,它将多次通过urlparse运行相同的url。)完整代码:
^{pr2}$相关问题 更多 >
编程相关推荐