有没有另一种方法来实现这个 Python3 循环?
import pandas as pd
import numpy as np
from itertools import product
from datetime import datetime
#замеряем скорость
start_time=datetime.now()
n_rows = 100
n_cols = 100
df1 = pd.DataFrame(np.random.randint(0, 100, size=(n_rows, n_cols)), columns=['col%d' % i for i in range(n_cols)])
df2 = pd.DataFrame(np.random.randint(0, 100, size=(n_rows, n_cols)), columns=['col%d' % i for i in range(n_cols)])
#1 Есть ли возможности повысить скорость цикла for или можно предложить другую реализацию.
#2 Получившийся результат положить в другой df.(сейчас не удобно, получившийся результат добавляется в тот же df2)
for x1, x2 in itertools.product(df1, df2):
df2['{0}_{1}'.format(x1,x2)] = df1[x1] + df2[x2]
# замеряем скорость
end_time = datetime.now()
print('Скорость выполнения скрипта: {}'.format(end_time - start_time))
In [12]:Скорость выполнения скрипта: 0:00:06.134649
已经快得多了 - 通过中间字典。当您将许多列添加到同一个列时,
DataFrame这是一项非常缓慢的操作,而且速度最慢。另外,我马上取values,这也加快了加法。我有 20 次这种方式,在签入 Google Colab 时,一切都加速了。
如果您稍后需要将数据放置在 df2 中,那么您可以在创建 df3 之后轻松完成此操作。
原始代码运行:
来自@CrazyElf 的建议代码
这是另一种选择: