从两个for循环中填充pandas数据帧的最快方法是什么?

时间:2018-05-12 15:10:13

标签: python pandas

我已经有了一个数据帧,我需要在每个索引上对所有前面的索引进行计算(因此对于187个指标,有17766个计算)。这需要高效,以扩展到数百万计算。

#this is the original dataframe
df = pd.DataFrame(np.random.rand(187,2))
#this is the dataframe to write to
df2 = pd.DataFrame()
#blank list to write to
ind_diff = [] 

方法1:列表

for n in range(0, len(df)):     

    for i in range(n + 1, len(df)):

        ind_diff.append(df.index[i] - df.index[n])

方法2:Dataframe追加

for n in range(0, len(df)):     

    for i in range(n + 1, len(df)):

        df2 = df2.append(df.Index[i] - df.Index[n])

方法#1仅返回最终计算作为输出,即长度为1的列表。为什么? 方法#2有效,但速度太慢。我知道这不是建议创建数据框的方法(根据文档而pd.concat更有效率)但我正在寻找最快的方法。提前致谢

1 个答案:

答案 0 :(得分:4)

让我们尝试广播阵列算法:

[Route("users/verifyLoginCredentials/{username}/{password}")]

非常快,但是很快就会失去记录(〜数百万),因为它会导致内存井喷,一半的计算是冗余的(因为对称性)