如何为大型pandas数据帧预分配内存?

时间:2018-03-22 08:19:46

标签: pandas dataframe

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

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

df = pd.DataFrame(columns=columnNames, data=np.empty(shape=(1000, 30001)))

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

record = pd.Series(index=df.columns)

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

loop:
    record[0:30000] = values   #fill record with values
    record['hash']= hash_value
    df.loc[index] = record     <==== this is slow
    index += 1 

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

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

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

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

0 个答案:

没有答案