我需要创建一个大型数据帧来保存我的数据。它有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'列,它运行时没有任何性能问题。最近我发现我需要这个额外的哈希列,这是一个字符串值。这个性能问题发生在这个新的列添加)