如何为大熊猫数据框预分配内存?

pan*_*pan 6 dataframe pandas

我需要创建一个大型数据框来保存我的数据。它有 30001 列,1000 行。对于数据类型,30000列是int64,最后一列是哈希值。

所以我首先创建一个空数据框:

df = pd.DataFrame(columns=columnNames, data=np.empty(shape=(1000, 30001)))
Run Code Online (Sandbox Code Playgroud)

然后我根据数据框的列创建一个系列:

record = pd.Series(index=df.columns)
Run Code Online (Sandbox Code Playgroud)

然后在循环中我将填充记录并将它们分配给数据框:

loop:
    record[0:30000] = values   #fill record with values
    record['hash']= hash_value
    df.loc[index] = record     <==== this is slow
    index += 1 
Run Code Online (Sandbox Code Playgroud)

当我调试代码时,我发现上述将记录分配给行的步骤非常慢。

我的猜测是,如果我可以创建一个具有精确预分配大小的数据框,那么将记录分配给每一行将会快得多。

那么我可以创建预分配全尺寸的数据框吗?

(注意:我的原始数据框没有“哈希”列,它运行时没有任何性能问题。最近我发现我需要这个额外的哈希列,它是一个字符串值。并且这个性能问题在添加这个新列之后发生)