我有下面的代码…但它在每次迭代中循环并将每个数据帧存储到列表中需要一些时间。然后将此数据帧列表连接在一起。是否有一种简单快捷的方法来实现最终结果
size = len(List)
i=0
dfs = []
for i in range(size):
abc = List.iloc[i]['xyz']
if abc.find('&')!=-1:
abc = abc.replace('&', '%26')
df = myfunction(abc)
dfs.append(df)
想想你的代码是做什么的。您发布的内容不完整,但我们可以推断您希望“转义”一列数据中的
&
字符,将该列中的每个值传递给myfunction()
(您没有显示,因此我们无法优化!),并连接所有结果第一部分对于加速比超过10倍的优化来说是微不足道的,尽管它对
myfunction()
部分没有帮助:现在您有了一系列需要传递给
myfunction()
的abc
值。下一步:这两行代码将为您提供与原始代码相同的结果。它们是否快得多取决于你花在
myfunction()
上的时间占了多少(参见Amdahl's Law)几乎可以肯定的是,无论你想做什么,使用熊猫内置的选项都会更有用。在这种情况下,如果没有更多的信息,你很难知道你想要做什么。看看这个:
https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html
一般来说,对于简单的事情,您通常可以通过map避免for循环,或者在数组上使用操作
我认为,就您的时间而言,这里最有效的做法是阅读pandas文档,寻找一种简单的方法来做您想做的事情,而不是尝试并行化任何事情(通常是非平凡的)
相关问题 更多 >
编程相关推荐