假设我有一个正在循环的算法。它将返回未知数量的结果,我想将它们全部存储在DataFrame中。例如:
df_results = pd.DataFrame(columns=['x', 'x_squared'])
x = 0
x_squared = 1
while x_squared < 100:
x_squared = x ** 2
df_iteration = pd.DataFrame(data=[[x,x_squared]], columns=['x', 'x_squared'])
df_results = df_results.append(df_iteration, ignore_index=True)
x += 1
print(df_results)
输出:
x x_squared
0 0 0
1 1 1
2 2 4
3 3 9
4 4 16
5 5 25
6 6 36
7 7 49
8 8 64
9 9 81
10 10 100
问题在于我要进行大量迭代时。数学运算本身相当快。但是,在进行大循环时,数据框的创建和附加变得非常慢。
我知道这个例子可以很容易地解决,而不必在每次迭代中使用数据框。但是想象一下一个复杂的算法,它还使用数据框执行操作等。对我来说,有时按步骤构建结果数据框是更容易的方法。哪种方法是最好的呢?
pandas.concat
一次,这应该可以节省一些对象创建时间。 - sim